Java 如何从iterator()以正确的顺序获取元素
下面是我将数据存储到HashMap中并使用迭代器显示数据的代码Java 如何从iterator()以正确的顺序获取元素,java,iterator,hashmap,Java,Iterator,Hashmap,下面是我将数据存储到HashMap中并使用迭代器显示数据的代码 public static void main(String args[]) { HashMap<String, String> hm = new HashMap<String, String>(); hm.put("aaa", "111"); hm.put("bbb", "222"); hm.put("ccc", "333"); hm.put("ddd", "444"
public static void main(String args[]) {
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("aaa", "111");
hm.put("bbb", "222");
hm.put("ccc", "333");
hm.put("ddd", "444");
hm.put("eee", "555");
hm.put("fff", "666");
Iterator iterator = hm.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String val = hm.get(key);
System.out.println(key + " " + val);
}
}
publicstaticvoidmain(字符串参数[]){
HashMap hm=新的HashMap();
hm.put(“aaa”、“111”);
hm.put(“bbb”、“222”);
hm.put(“ccc”、“333”);
hm.put(“ddd”、“444”);
hm.put(“eee”、“555”);
hm.put(“fff”、“666”);
迭代器迭代器=hm.keySet().Iterator();
while(iterator.hasNext()){
字符串键=(字符串)迭代器。下一步();
字符串val=hm.get(键);
System.out.println(键+“”+val);
}
}
但是它没有按照我存储的顺序显示。谁能告诉我哪里出了问题?如何按顺序获取元素 A没有保证订单:
此类不保证地图的顺序
使用一个
哈希表和链表实现的映射接口,具有可预测的迭代顺序
与HashMap不同,您需要使用,因为它维护其条目的顺序
从javadocs:
。。。使用可预测的迭代顺序实现Map接口。此实现不同于
HashMap,因为它维护一个贯穿所有应用程序的双链接列表
它的条目。此链表定义了迭代顺序,其中
通常是将关键点插入地图的顺序
(插入顺序)
HashMap不保持我们将数据放入其中的顺序。因此,您可以改为使用LinkedHashMap。它保持我们将数据放入其中的顺序。LinkedHashMap可以与HashMap一样使用
Map<key,value> map=new LinkedHashMap<key,value>();
map.put("key","value");
map.put("key","value");
map.put("key","value");
Map Map=newlinkedhashmap();
地图放置(“键”、“值”);
地图放置(“键”、“值”);
地图放置(“键”、“值”);
//同样,您也可以使用迭代器访问数据。它将按添加数据的顺序显示数据。原因是HashMap和HashSet不保证存储值的顺序。元素的位置取决于内部表的大小和键的hashCode
如果要以某种顺序加载数据,则需要对键/值进行排序。例如,您可以将条目集合(Map.entrySet())放入列表中,并根据您想要的任何条件进行排序。或者您可以使用SortedMap(例如TreeMap)来存储对象。duplicate???我从不抄一次答案。我所知道的我都贴出来了。这并不意味着我所知道的没有人知道?在给出否定的分数之前先想一想,看看别人给出的答案。他们已经解释了
HashMap
不能维持秩序,并建议使用LinkedHashMap
作为替代方案。你的回答只提供了已经提供的内容。它实际上提供的更少,因为您甚至没有链接到javadocs。我确实考虑过投反对票,我甚至确保我没有匿名回答-不客气。每个问题都有一个类似的答案,如果有多个答案,那么所有答案都表示类似的答案。这并不意味着我们抄袭。因此每个问题通常都会得到多个答案,所有答案在任何方面都有相同的含义。为什么你只看我的答案。我的答案比其他人有更多的描述。你的答案不是更具描述性,它只是有更多的单词。你说的其他一切都不是真的。如果一个问题已经得到了充分的回答,大多数人会放弃投票,不再提供自己的答案。如果他们有什么要补充的,他们通常会添加他们的小道消息作为评论。@mre他的回答比其他人晚3分钟。他大概花了3分钟以上的时间才写出来。