java集合之三映射:HashMap、Hashtable、LinkedHashMap、TreeMap

  1 package com.jdk7.chapter4;
  2 
  3 import java.util.HashMap;
  4 import java.util.Hashtable;
  5 import java.util.Iterator;
  6 import java.util.Map;
  7 import java.util.TreeMap;
  8 
  9 /**
 10  * 集合之形式三》映射(Map),根据键得到值,不允许'键'重复,允许'值'重复,包含HashMap、HashTable、LinkedHashMap、TreeMap
 11  * HashMap:允许最多一个'键'为null,多个'值'为null; 不支持线程同步(即多个线程可以同时写HashMap)
 12  * HashTable:不允许键或值为null,支持线程同步(即同一时刻只能一个线程写HashTable)
 13  * LinkedHashMap:保存记录的插入顺序,先插入的记录会先得到,允许最多一个'键'为null,多个'值'为null
 14  * TreeMap:按键升序排列,不允许'键'为null,允许多个'值'为null
 15  * @author Administrator
 16  *
 17  */
 18 public class MapTest {
 19     public static void init(Map map){
 20         if(map==null){
 21             System.out.println("映射不能为空!");
 22         }
 23         map.put("001", "Hello");
 24         map.put("002", "Lily");
 25         map.put("003", "Lucy");
 26         map.put("004", "Hanmei");
 27     }
 28     public static void printMap(Map map){
 29         if(map==null){
 30             System.out.println("映射为空");
 31         }
 32         //先获取Map的所有键,获取的键值为无重复的Set,再依次遍历key集合
 33         Iterator it = map.keySet().iterator();
 34         Object key = null;
 35         Object value = null;
 36         System.out.println("=======遍历key=======");
 37         while(it.hasNext()){
 38             key = it.next();
 39             value = map.get(key);
 40             System.out.println("key: "+key+" value: "+value);
 41         }
 42         
 43         Iterator itentry = map.entrySet().iterator();
 44         Map.Entry entry = null;
 45         System.out.println("=======遍历集合中的每条记录=======");
 46         while(itentry.hasNext()){
 47             entry = (Map.Entry)itentry.next();
 48             System.out.println("key: "+entry.getKey()+" value: "+entry.getValue());
 49         }
 50         System.out.println();
 51     }
 52     
 53     public static boolean containsKey(Map map, Object obj){
 54         if(map==null){
 55             return false;
 56         }
 57         return map.containsKey(obj);
 58     }
 59     
 60     public static boolean containsValue(Map map, Object obj){
 61         if(map==null){
 62             return false;
 63         }
 64         return map.containsValue(obj);
 65     }
 66     /**
 67      * 
 68      * @param map
 69      
 70     public static void add(Map map){
 71         MapTest.init(map);
 72         System.out.println("Map中是否包含Key>"+MapTest.containsKey(map, null));
 73         System.out.println("Map中是否包含Value>"+MapTest.containsValue(map, "2222"));
 74         map.put(null, "4444");
 75         map.put(null, "2222");
 76         map.put("005", null);
 77         map.put("006", null);
 78         MapTest.printMap(map);
 79     }
 80     */
 81     public static void add(Map map,Object key, Object value){
 82         MapTest.init(map);
 83         if(!(MapTest.containsKey(map, key) && MapTest.containsValue(map, value))){
 84             map.put(key, value);
 85         }
 86     }
 87     
 88     public static void HashMap(){
 89         System.out.println("===============HashMap映射===============");
 90         Map map = new HashMap();
 91         MapTest.add(map, null, "4444");
 92         MapTest.add(map, null, "2222");
 93         MapTest.add(map, "005", null);
 94         MapTest.add(map, "006", null);
 95         MapTest.printMap(map);
 96     }
 97     
 98     public static void HashTable(){
 99         System.out.println("===============HashTable映射===============");
100         Map map = new Hashtable();
101         MapTest.init(map);
102         Object key = "005";
103         Object value = "700";
104         if(!(MapTest.containsKey(map, key) && MapTest.containsValue(map, value))){
105             map.put(key, value);
106         }
107         MapTest.printMap(map);
108     }
109     
110     public static void linkedHashMap(){
111         System.out.println("===============linkedHashMap映射===============");
112         Map map = new java.util.LinkedHashMap();
113         MapTest.add(map, null, "4444");
114         MapTest.add(map, null, "2222");
115         MapTest.add(map, "005", null);
116         MapTest.add(map, "006", null);
117         MapTest.printMap(map);
118     }
119     
120     public static void treeMap(){
121         System.out.println("===============treeMap映射===============");
122         Map map = new TreeMap();
123         MapTest.init(map);
124         Object key = "005";
125         Object value = null;
126         if(!(MapTest.containsKey(map, key) && MapTest.containsValue(map, value))){
127             map.put(key, value);
128         }
129         MapTest.printMap(map);
130     }
131     public static void main(String[] args) {
132         MapTest mt = new MapTest();
133         mt.HashMap();
134         mt.HashTable();
135         mt.linkedHashMap();
136         mt.treeMap();
137     }
138 }
139 
140 执行结果:
141 ===============HashMap映射===============
142 =======遍历key=======
143 key: null value: 2222
144 key: 004 value: Hanmei
145 key: 005 value: null
146 key: 006 value: null
147 key: 001 value: Hello
148 key: 002 value: Lily
149 key: 003 value: Lucy
150 =======遍历集合中的每条记录=======
151 key: null value: 2222
152 key: 004 value: Hanmei
153 key: 005 value: null
154 key: 006 value: null
155 key: 001 value: Hello
156 key: 002 value: Lily
157 key: 003 value: Lucy
158 
159 ===============HashTable映射===============
160 =======遍历key=======
161 key: 005 value: 700
162 key: 004 value: Hanmei
163 key: 003 value: Lucy
164 key: 002 value: Lily
165 key: 001 value: Hello
166 =======遍历集合中的每条记录=======
167 key: 005 value: 700
168 key: 004 value: Hanmei
169 key: 003 value: Lucy
170 key: 002 value: Lily
171 key: 001 value: Hello
172 
173 ===============linkedHashMap映射===============
174 =======遍历key=======
175 key: 001 value: Hello
176 key: 002 value: Lily
177 key: 003 value: Lucy
178 key: 004 value: Hanmei
179 key: null value: 2222
180 key: 005 value: null
181 key: 006 value: null
182 =======遍历集合中的每条记录=======
183 key: 001 value: Hello
184 key: 002 value: Lily
185 key: 003 value: Lucy
186 key: 004 value: Hanmei
187 key: null value: 2222
188 key: 005 value: null
189 key: 006 value: null
190 
191 ===============treeMap映射===============
192 =======遍历key=======
193 key: 001 value: Hello
194 key: 002 value: Lily
195 key: 003 value: Lucy
196 key: 004 value: Hanmei
197 key: 005 value: null
198 =======遍历集合中的每条记录=======
199 key: 001 value: Hello
200 key: 002 value: Lily
201 key: 003 value: Lucy
202 key: 004 value: Hanmei
203 key: 005 value: null

 

posted @ 2018-02-22 14:30  celineluo  阅读(272)  评论(0编辑  收藏  举报