我正在研究java HashMaps,发现它将值添加到列表的头部.例如 ,
hm.put(麦克,2); hm.put(安德鲁,3);
现在,如果我使用迭代器打印hasmap,我得到
安德鲁3
迈克2
我希望以FIFO方式而不是LIFO方式添加项目......有没有办法做到这一点?
请尝试使用LinkedHashMap.我不认为HashMaps保证订单.
LinkedHashMap<String,String> lHashMap = new LinkedHashMap<String,String>();
lHashMap.put("1", "One");
lHashMap.put("2", "Two");
lHashMap.put("3", "Three");
Collection c = lHashMap.values();
Iterator itr = c.iterator();
while (itr.hasNext()){
System.out.println(itr.next());
}
Run Code Online (Sandbox Code Playgroud)
产量
One
Two
Three
Run Code Online (Sandbox Code Playgroud)
Java中的Map抽象不适用于LIFO或FIFO的概念.这些概念主要适用于有序序列,而映射存储的顺序完全独立于插入值的orde,以便最大限度地提高效率.例如,HashMap使用散列来存储其值,散列函数随机散布其值越多,性能越好.类似地,TreeMap使用平衡二进制搜索树,它以排序顺序存储其值以保证快速查找.
但是,Java确实有一个非常酷的类,叫做LinkedHashMap,我相信它正是你想要的.它提供了HashMap的速度,同时保证了可预测的遍历顺序,该顺序由插入元素的顺序定义.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |