一、双列集合结构
1、类型区别:
-
HashMap
它是最常用的map,它通过hashcode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。他是非同步的。它允许一个key为null,如果不止一个的话它会被覆盖啊,但它允许多个value为null; -
TreeMap
它能把它保存的记录根据key值默认升序排序,也可以指定顺序。当Iterator遍历过TreeMap后,得到的记录是拍过序的。TreeMap不允许key值为null。它是非同步的; -
HashTable
与hashmap类似,但不同的是,它不允许key-value值为空。它支持线程同步,即任意一个线程只能写入一个hashtable,也因此它比较慢; -
LinkedHashMap
它保存了记录的插入顺序,即在Iterator遍历LinkedHashMap的时候,得到的记录肯定是先插入的。在遍历时会比hashmap慢,key-value值均允许为null,它是非同步的。
2、什么是双列集合?
首先,对比之前的collection单列集合来讲,map集合是存储key-value键值对的的集合,形象理解一下就是,单列集合就是单身,双列集合就是夫妻。
3、list与map的区别与联系?
- 首先list与map都是Java中常用的容器,都是接口;
- 然后,结构上来说,list存储单个元素,map存储成对的key-value元素;
- list存储有序的元素,但map存放无序(存储无序);
- list中允许存储重复值,但map中key是唯一的(如果对应了重复的,后面的value会覆盖,最终存储的也仍然是唯一的一个key-value);
二、map中的常见用法
1、map的初始化及插入、删除、获取、清空:
Map<String,String> map = new HashMap<>();//初始化
map.put("key1","value1");//插入
map.remove("key1"); //删除
map.get("key1"); //获取
map.clear(); //清空
这些操作就比较简单,就不贴例码了。
2、几种遍历方式:
1.for循环遍历
for(Map.Entry<String, String> s:set){
System.out.print(s.getKey() + " ");
System.out.print(s.getValue() + " ");
}
2、迭代器遍历
Iterator<Map.Entry<String,String>> iter = set.iterator();
while(iter.hasNext()){
Map.Entry<String,String> entry = iter.next();
System.out.print(entry.getKey() + " ");
System.out.print(entry.getValue() + " ");
}
3、常用API