关于Map迭代循环,key和value的顺序问题
程序员文章站
2022-06-28 13:31:34
使用Hashtable,keySet()返回的顺序为降序(key降顺序) >6, 5, 4, 3, 2, 1使用TreeMap,keySet()返回的顺序为升序(key升顺序) >1, 2, 3, 4, 5, 6使用HashMap,keySet()返回的顺序为乱序(随机顺序) >3, 2, 1, 6 ......
使用hashtable,keyset()返回的顺序为降序(key降顺序) ---->6, 5, 4, 3, 2, 1
使用treemap,keyset()返回的顺序为升序(key升顺序) ---->1, 2, 3, 4, 5, 6
使用hashmap,keyset()返回的顺序为乱序(随机顺序) ---->3, 2, 1, 6, 5, 4
使用linkedhashmap,keyset()返回的顺序为原序(put顺序) ---->1, 2, 6, 3, 4, 5
1 package map2json; 2 3 import java.util.hashmap; 4 import java.util.hashtable; 5 import java.util.iterator; 6 import java.util.linkedhashmap; 7 import java.util.map; 8 import java.util.map.entry; 9 import java.util.set; 10 import java.util.treemap; 11 12 public class itermap { 13 public static void main(string[] args) { 14 map1(); 15 map2(); 16 map3(); 17 getkv(); 18 } 19 20 public static map<string, string> setmap() { 21 // 使用hashtable,keyset()返回的顺序为降序(key降顺序) ---->6, 5, 4, 3, 2, 1 22 // 使用treemap,keyset()返回的顺序为升序(key升顺序) ---->1, 2, 3, 4, 5, 6 23 // 使用hashmap,keyset()返回的顺序为乱序(随机顺序) ---->3, 2, 1, 6, 5, 4 24 // 使用linkedhashmap,keyset()返回的顺序为原序(put顺序) ---->1, 2, 6, 3, 4, 5 25 map<string, string> map = new linkedhashmap<string, string>(); 26 map.put("1", "a"); 27 map.put("2", "b"); 28 map.put("6", "a"); 29 map.put("3", "c"); 30 map.put("4", "d"); 31 map.put("5", "e"); 32 return map; 33 } 34 35 public static void map1() { 36 37 set<string> set = setmap().keyset(); 38 system.out.println(set.tostring()); 39 for (string str : set) { 40 string valuestring = setmap().get(str); 41 system.out.println(str + ":" + valuestring); 42 } 43 } 44 45 // 通过实体getkey和getvalue 46 public static void map2() { 47 iterator<entry<string, string>> it = setmap().entryset().iterator(); 48 while (it.hasnext()) { 49 entry<string, string> entry = it.next(); 50 system.out.println("key= " + entry.getkey() + " and value= " 51 + entry.getvalue()); 52 } 53 } 54 55 // 数据较多时使用 56 public static void map3() { 57 for (entry<string, string> en : setmap().entryset()) { 58 en.getkey(); 59 en.getvalue(); 60 system.out.println(en.getkey() + ":" + en.getvalue()); 61 } 62 } 63 64 // 得到所有的key和value的方法 65 public static void getkv() { 66 system.out.println(setmap().keyset().tostring()); 67 system.out.println(setmap().values().tostring()); 68 } 69 70 }