今天写程序时遇到一个疑问,虽然LinkedHashMap 是保持插入顺序的,那么我们使用entryset进行遍历时是否也保持了插入顺序呢,答案是肯定的!!
根据java map,map接口提供了三种集合结构的视图(view),分别允许把集合看做键的集合,值的集合以及键值对映射的集合.一个集合的顺序也就是在这三种视图上的iterator返回元素的顺序.
所以,使用keyset,values和entryset三种视图对LinkedHashMap遍历,得到的都是元素的插入顺序.
Mapmap = new LinkedHashMap (); for( int i = 0; i< 1000; ++i) { map.put(i, 2*i); } for(Entry entry: map.entrySet() ) { System.out.println(entry); } for( Integer key : map.keySet() ) { System.out.println(key + " " + map.get(key)); }
参考:
1.http://stackoverflow.com/questions/1190083/does-entryset-in-a-linkedhashmap-also-guarantee-order
2.http://www.coderanch.com/t/434260/java/java/LinkedHashMap-keySet
3.http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html
没有评论:
发表评论