当前位置: 移动技术网 > IT编程>开发语言>Java > 关于Map迭代循环,key和value的顺序问题

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

2019年03月01日  | 移动技术网IT编程  | 我要评论

使用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 }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网