How to Maintain order of insertion
我想将一个键值对添加到哈希表(或任何其他集合)中,但必须维护插入顺序。 我怎样才能做到这一点?
就像我将1添加为键"一"作为值,2作为键和"两"作为值。
输出应该是:
1 2 | 1:one 2:two |
以下是一些重要的
-
LinkedHashMap :"具有可预测的迭代顺序[...],通常是将键插入到地图中的顺序(插入顺序)。" -
HashMap :"不保证地图的顺序" -
TreeMap :"根据其键的自然顺序或Comparator 进行排序"-
即它是
SortedMap
-
即它是
所以看起来
这是一个说明差异的片段;它还显示了迭代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.util.*; public class MapExample { public static void main(String[] args) { populateThenDump(new HashMap<String,Integer>()); populateThenDump(new TreeMap<String,Integer>()); populateThenDump(new LinkedHashMap<String,Integer>()); } static void populateThenDump(Map<String,Integer> map) { System.out.println(map.getClass().getName()); map.put("Zero", 0); map.put("One", 1); map.put("Two", 2); map.put("Three", 3); map.put("Four", 4); for (Map.Entry<String,Integer> entry : map.entrySet()) { System.out.println(entry.getKey() +" =>" + entry.getValue()); } } } |
以上代码段的输出(如ideone.com上所示):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | java.util.HashMap // unordered, results may vary Three => 3 Zero => 0 One => 1 Four => 4 Two => 2 java.util.TreeMap // ordered by String keys lexicographically Four => 4 One => 1 Three => 3 Two => 2 Zero => 0 java.util.LinkedHashMap // insertion order Zero => 0 One => 1 Two => 2 Three => 3 Four => 4 |
相关问题
- 迭代地图
-
迭代并从地图中删除
-
如果要在迭代时修改地图,则需要使用其
Iterator 。
-
如果要在迭代时修改地图,则需要使用其
类似的问题
- 如何在哈希表中保持元素的顺序
- LinkedHashMap中的entrySet()是否也保证了订单?
- 实现Map并保持插入顺序的Java类?
- Java中的有序列表映射实现
对于哈希表,请使用
您正在搜索