欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于Map迭代循环,key和value的顺序问题

程序员文章站 2022-03-18 15:48:09
使用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 }