特点:
1、Map集合是一个双列集合,一个元素包含两个值(Key,value)
2、Map集合中的元素,key和value的数据类型可以相同,也可以不相同。
3、Map集合中的元素,key是不允许重复的,但是value是允许重复的。
4、Map集合中的元素key和value是一一对应的。
Map接口的常用实现类:HashMap(无序)
HashMap的一个子类:linkedHashMap(有序)
HashMap集合的特点:
1、HashMap集合底层是哈希表,查询速度非常快。
2、HashMap是一个无序的集合,存取元素的顺序可能不一致。
Map中常用方法的介绍:
1、public V put(K key,V value):把指定的键与指定的值添加到Map集合中
返回值V,当key重复时,会替换原本的value并返回。当key不重复时,会将新的value存入Map集合中。
2、public V remove(Object key)
把指定键所对应的值在Map集合中删除,返回被删除的值,如果key不存在则返回null
3、public V get(Object key)
根据键返回对应的值。
4、boolean Containskey(Object key)
判断集合中是否存在指定键,包含返回true,不包含返回false。
5、boolean ContainsValue(Object value)
判断集合中是否存在指定的值,包含返回true,不包含返回false。
Map集合第一种遍历方式:通过键找到值的方法。
Map集合中的方法:
Set
实现步骤:
1、使用Map集合中的方法keySet(),把Map所有的key取出,存入到Set集合中。
2、遍历Set集合,获取Map集合中的每一个key。
3、通过Map集合中的方法get(key)找到value。
遍历方法2:
Map.Entry
作用:当Map集合已经创建,那么就会在map集合中创建一个Entry对象,用来记录键与值(键与值的映射关系)。
Set
遍历Set集合,获取set集合中的每一个Entry对象。
Entry对象中的方法 getKey()获取key值。
Entry对象中的方法 getValue()获取value值
使用步骤:
1、使用Map集合中的方法entrySet(),把Map集合中的多个Entry对象取出来,存储到一个Set集合中。
2、遍历Set集合,获取每一个Entry对象。
3、使用Entry对象的方法getKey(),getValue()获取键与值。
以上方法的代码案例:
public static void main(String[] args) {
Map m = new HashMap<>();
m.put(1,"周杰伦");
m.put(2,"周润发");
m.put(3,"胡歌");
m.put(4,"彭于晏");
System.out.println(m.put(5, "林俊杰"));//null
String another = m.put(5,"吴京");
System.out.println(another);//林俊杰
m.put(6,"蔡徐坤");
System.out.println(m.remove(6));
//根据键,取出值
System.out.println(m.get(1));//周杰伦
System.out.println(m.get(6));//null 6 已经被删除,不存在
System.out.println(m.containsKey(2));//true
System.out.println(m.containsValue("周润发"));//true
//遍历map集合
//1、通过键找值
Set set = m.keySet();
System.out.println(set);//[1, 2, 3, 4, 5] 返回的集合是键的集合
//遍历set集合返回,并根据其中元素取出map集合中的值
Iterator iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(m.get(iterator.next()));//周杰伦 周润发 胡歌 彭于晏 吴京
}
//遍历方式2
//增强for
for (Object o : set) {
System.out.println(m.get(o));周杰伦 周润发 胡歌 彭于晏 吴京
}
Set set1 = m.entrySet();
System.out.println(set1);//[1=周杰伦, 2=周润发, 3=胡歌, 4=彭于晏, 5=吴京]
Iterator iterator1 = set1.iterator();
while(iterator1.hasNext()){
Map.Entry me = (Map.Entry)iterator1.next();
System.out.println("key:"+me.getKey()+" value:"+me.getValue());
}
//用entrySet() 增强for
Set set2 = m.entrySet();
for (Map.Entry tt : m.entrySet()) {//Set set12 = m.entrySet(); 写set是错误的
System.out.println("key:"+tt.getKey()+" value:"+tt.getValue());
}
System.out.println(m.values());
}



