JAVA集合(Map)
这一篇文章简单的谈一下集合Map
Map:(1)严格来说 Map 并不是一个集合,而是两个集合之间的映射关系。(2)这两个集合每一条数据通过映射关系,我们可以看成是一条数据。即 Entry(key,value)。Map 可以看成是由多个 Entry 组成。(3)因为 Map 集合即没有实现于 Collection 接口,也没有实现 Iterable 接口,所以不能对 Map 集合进行 for-each 遍历。
下面分别说一下他们的实现类:
1.HashMap和Hashtable实现类:HashMap和Hashtable之间的关系有点类似于Arraylist和Vecctor的关系。
特点:先说一下两个实现类之间的特点
(1)Hashtable是线程安全的,HashMap是线程不安全的,所以HashMap比Hashtable的性能高一点。
(2)Hashtable不允许使用null作为key和value;但HashMap可以使用null作为key或value。
(3)HashMap和Hashtable判断两个value相等的标准:只要两个对象通过equals方法比较返回true即可。
接下来用代码详细了解一下他们的用法:
1 Map hashmap = new HashMap(); 2 //添加元素 3 hashmap.put("k1","v1"); 4 hashmap.put("k2","v2"); 5 hashmap.put("k3","v3"); 6 hashmap.put("k4","v4"); 7 //通过key删除元素 8 hashmap.remove("k4"); 9 10 //过 map.keySet() 得到 Map 的key 的集合,然后 通过 get(key) 得到 Value 11 Set set = hashmap.keySet(); 12 for(Object obj:set){ 13 System.out.println(obj); 14 } 15 16 //通过key得到value 17 Object object = hashmap.get("k1"); 18 System.out.println("k1="+object); 19 20 //通过key修改value 21 hashmap.put("k3","修改后v3"); 22 23 //通过 map.values() 方法得到 Map 中的 value 集合 24 Collection value = hashmap.values(); 25 for(Object obj:value){ 26 System.out.println(obj); 27 } 28 29 //通过 Map.entrySet() 得到 Map 的 Entry集合,然后遍历 30 Iterator it = hashmap.entrySet().iterator(); 31 while(it.hasNext()){ 32 Map.Entry entry = (Map.Entry)it.next(); 33 System.out.println(entry.getKey()+"="+entry.getValue()); 34 }
2.TreeMap实现类:
特点:TreeMap线程时不安全的,key不允许重复
TreeMap是基于红黑树对TreeMap中所有key进行排序,从而保证TreeMap中所有key-value对处于有序状态。TreeMap也有两种排序方式:
(1)自然排序:TreeMap的所有key必须实现Comparable接口,而且所有的key应该是同一个类的对象,否则抛出ClassCastException异常。
(2)定制排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中的所有key进行排序。不需要Map的key实现Comparable接口。

浙公网安备 33010602011771号