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接口。

 

posted @ 2019-03-21 20:56  单翼路西法  阅读(308)  评论(0)    收藏  举报