map有序无序?如果说有序, 这个顺序是怎么定义的? 安装put的先后顺序吗? 还是被put元素的内容呢?
经观察,应该是后者,跟put先后顺序无关, 跟内部实现有关(可能是hash排序的, 非大小排序)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
public static void main(String[] args) {// asfd();// TODO Auto-generated method stubMap<String, String> map = new
ConcurrentHashMap<String, String>();// map.put("10.167.240.78", "aa");// map.put("10.167.240.61", "bb");// map.put("10.167.240.46", "dd");// map.put("10.167.240.54", "cc");map.put("205", "b");map.put("101", "b");map.put("201", "b");for (int i = 10; i > 0; i--) {// map.put(i+"", Math.random()+"");}System.out.println(map);} |
打印 :{201=b, 101=b, 205=b}
如果是
map.put("205", "b");
map.put("101", "b");
map.put("201",
"b");
(把205改成25)
则打印:
{201=b, 101=b, 25=b}
而且发现ConcurrentHashMap和HashMap的表现也不同 —— 内部的hash算法还有细节上的区别吗?
原文:http://www.cnblogs.com/FlyAway2013/p/3550431.html