说完Collections的单列集合,接下来介绍Map双列集合
java.util.Map<k,v>
Map集合的特点
1.Map集合是一个双列集合,一个元素包含一个键值对(一个Key,一个Value)
2.Map集合中的key和value的数据类型可以相同,也可以不相同
3.key不允许重复,value可以重复
4,key和value是一一对应的关系
而Map接口中三个常用的实现类就是HashMap,LinkedHashMap和Hashtable
Map接口中的常用方法
1.public v put (K key,V value)把指定的键值对添加到Map集合中。如果key值重复了,则返回之前的重复的value,新的value会替换掉旧的。如果key值不重复,则返回null
2.public v remove(Object key)把指定的键所对应的值删除,如果存在则返回该value,如果不存在则返回null
3.public v get(Object key)获取指定的键所对应的值,如果存在则返回该value,如果不存在则返回null
4.boolean containsKey(Object key)判断集合中是否包含该key值
Map集合遍历的方法有两种
1.遍历键找值
1.1通过Map集合的keySet()方法把集合中所有的key值取出来,并存储到一个set集合中
1.2通过迭代器/for增强把Set集合遍历输出,并通过get(key)的方法把Map集合中value值给输出出来
2.Entry输出键值对对象
在Map接口中有一个内部接口Entry。当Map集合创建的时候,就会在Map集合中创建一个Entry对象(类似于内部类),用来记录键值对的映射关系
操作步骤
1.使用Map集合中的方法entrySet把Map集合中多个Entry对象取出来,存储到一个Set集合中
2.遍历Set集合,获取每一个Entry对象
3.使用Entry对象中的方法getKey()和getValue()获取键和值
public class Demo01 {
public static void main(String[] args) {
//创建Map集合,并放入一系列的键值对
Map<Integer, String> map=new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
//使用entrySet()方法
Set<Map.Entry<Integer, String>> set=map.entrySet();
//Set集合的泛型就是Entry接口的对象,通过外部接口Map调用内部接口Entry
//创建迭代器,遍历Set集合
Iterator<Map.Entry<Integer, String>> iterator=set.iterator();
while(iterator.hasNext()){
//获取每一个Entry对象
Map.Entry<Integer, String> entry=iterator.next();
//使用Entry对象中的方法
Integer key=entry.getKey();
String value=entry.getValue();
System.out.println(key+"="+value);
/*
* 1=a
2=b
3=c
*/
}
}
}
HashMap集合
底层是一个哈希表,是一个线程不安全的集合,是多线程的集合
HashMap可以存储null值,null键
LinkedHashMap集合
底层原理 哈希表+链表
Hashtable集合
底层也是一个哈希表,是一个线程安全的集合,单线程,速度慢
Hashtable不可以存储null值,null键
Hashtable的子类Properties集合是唯一与IO流结合的集合