一、Map<K,V>集合
Map集合被称为双列集合,每个元素包含键(Key)和值(Value),将键映射到值,一个映射不能包含重复的键,每个键最多只能映射到一个值,即Key和Value是一一对应的
Map集合下的常用子类包括HashMap和LinkedHashMap,HashMap的底层是哈希表,即数组+链表/红黑树,并且是一个无序的集合,存储元素和取出元素的顺序可能不一致,LinkedHashMap的底层是哈希表+链表,是一个具有可预知迭代顺序的集合
Map接口中的常用方法

1.put方法:存储键值时,若K值不重复,则返回值为null,若K值重复,则会使用新的V值代替原来的V值,并返回被替换的V值
2.remove方法:将K值对应的键值对元素移除,并返回该键值对的V值,若K值不存在,则返回null
3.get方法:根据指定的键,返回对应的值,若key不存在,则返回null
4.使用keySet方法遍历Map集合:
KeySet方法会把Map集合中所有的K值取出来存放到一个Set集合中,遍历该Set集合,即可得到Map集合中的每一个key值,最后通过Map集合中的get方法获取对应的value值
代码如下:
Map<String,Integer> map=new HashMap<>();
Set<String> set=map.keySet();
Iterator<String> it=set.iterator(); //使用迭代器遍历
while(it.hasNext()){
String key=it.next();
Integer value=Map.get(key);
System.out.println(key+"="+value);
}
(另一种方法,使用增强for循环遍历:
for(String key:set){
Integer value=Map.get(key);
System.out.println(key+"="+value);
}
5.使用entrySet方法遍历Map集合:
Entry<K,V>是Map接口内部的一个接口,当Map集合创建时,就会在Map集合内部创建一个Entry对象,用来记录键与值。即键值对对象(键与值的映射关系)
entrySet方法会把Map接口内部的多个Entry对象取出来存储到一个Set集合中,通过遍历该Set集合可以获取每一个Entry对象,然后使用Entry中的两个方法getKey()和getValue()分别获取键与值
代码如下:
Map<String,Integer> map=new HashMap<>();
Set<Map.Entry<String,Integer>> set=map.entrySet();
Iterator<Map.Entry<String,Integer>> it=set.iterator(); //使用迭代器遍历
while(it.hasNext()){
Map.Entry<String,Integer> entry=it.next();
String key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key+"="+value);
}
(另一种方法,使用增强for循环遍历:
for(Map.Entry<String,Integer> entry:set){
String key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key+"="+value);
}
二、HashMap存储自定义类型键值
Map集合保证key值不重复的前提是,作为key的元素必须重写hasCoed()方法和equals()方法
HashMap存储自定义类型键值时,就得保证自定义类型重写以上两个方法
本文介绍了Java中的Map集合,强调了HashMap和LinkedHashMap的区别。HashMap基于哈希表,无序存储,而LinkedHashMap保持插入顺序。文中详细讲解了Map接口的关键方法如put、remove、get以及遍历Map的两种方式,并指出在存储自定义类型键值时需重写hashCode()和equals()方法。
1204

被折叠的 条评论
为什么被折叠?



