我在HashMap中使用不同的键插入四个值。 代码段:
HashMap<Integer, String> choice = new HashMap<Integer, String>();
choice.put(1, "1917");
choice.put(2, "1791");
choice.put(3, "1902");
choice.put(4, "1997");
但是当我打印那个地图值时,它返回的结果如下:
{4 = 1997,1 = 1917,2 = 1791,3 = 1902}
如何按照我放入/插入的方式按顺序获取地图值?
答案 0 :(得分:14)
您可以使用LinkedHashMap
instead,它将保留广告订单:
这个实现与HashMap的不同之处在于它维护着一个运行所有条目的双向链表。此链接列表定义迭代排序,通常将键插入到地图中的顺序(插入顺序)。
您可以像这样修改代码:
Map<Integer, String> choice = new LinkedHashMap<Integer, String>();
//rest of the code is the same
答案 1 :(得分:2)
LinkedHashMap,可以使用Map接口的Hash表和链表实现。
它保持使用双向链表插入值的顺序相同。
参考:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html
答案 2 :(得分:0)
[编辑] OP要求的内容对我来说并不完全清楚。 OP可以询问,&#34;如何按照插入顺序从地图中检索项目?&#34;如果这是OP的意思,那么以下信息不是解决方案。
如果OP正在询问,&#34;如何从按键排序的哈希中检索项目?&#34;然后以下是关键点。获取散列/关联数组的排序键是一种常见操作。
答案可以在how to sort Map values by key in Java中找到:
List sortedKeys=new ArrayList(yourMap.keySet());
Collections.sort(sortedKeys);
如果您关心密钥的存储和检索顺序,请考虑使用TreeMap
。除非您拥有非常多的元素(数百万+),否则性能差异可能不太明显。