这是我的hashmap:
HashMap<Long, Day> hashMapTest = new HashMap<Long, Day>();
Run Code Online (Sandbox Code Playgroud)
我插入Date.getTime()这个hashmap,如:
Date start = new Date(vonDatum.getTime());
for (int i = 0; i < tagediff; i++)
{
Day day= new Day(start);
this.mitarbeiterTagHashMap.put(start.getTime(), day);
CalendarUtil.addDaysToDate(start, 1);
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是当我调用hashmap时,顺序完全是另一个,并且键不适合插入:
for (Long name : hashMapTest.keySet())
{
Window.alert(name + ": " + hashMapTest.get(name));
}
Run Code Online (Sandbox Code Playgroud)
Jun*_*san 11
奇怪的是当我调用hashmap时,顺序完全是另一个,并且键不适合插入:
HashMap不维护插入顺序,但有一个名为LinkedHashMap的替代方法可以维护插入顺序.或者,如果您希望按自然顺序对键进行排序(使用keys compareTo方法),那么您可以使用TreeMap.
不, HashMap s 不会自动对它们的键进行排序。
你想要一个TreeMap对键进行排序,或者一个LinkedHashMap保留插入顺序。
下面是一个例子:
long l0 = 0l;
long l1 = 1l;
Map<Long, String> hashMap = new HashMap<Long, String>();
Map<Long, String> treeMap = new TreeMap<Long, String>();
Map<Long, String> linkedHashMap = new LinkedHashMap<Long, String>();
// does not guarantee key order 1, 0
hashMap.put(l1, null);
hashMap.put(l0, null);
// guarantees key order 0, 1
treeMap.put(l1, null);
treeMap.put(l0, null);
// guarantees key order 1, 0
linkedHashMap.put(l1, null);
linkedHashMap.put(l0, null);
System.out.printf("HashMap: %s%nTreeMap: %s%nLinkedHashMap: %s%n", hashMap, treeMap, linkedHashMap);
Run Code Online (Sandbox Code Playgroud)
输出
HashMap: {0=null, 1=null}
TreeMap: {0=null, 1=null}
LinkedHashMap: {1=null, 0=null}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6018 次 |
| 最近记录: |