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