【发布时间】:2011-06-16 11:55:40
【问题描述】:
我正在尝试将一些键值放入 Map 并尝试以与插入它们相同的顺序检索它们。例如下面是我的代码
import java.util.*;
import java.util.Map.Entry;
public class HashMaptoArrayExample {
public static void main(String args[])
{
Map<String,Integer> map= new HashMap<String,Integer>();
// put some values into map
map.put("first",1);
map.put("second",2);
map.put("third",3);
map.put("fourth",4);
map.put("fifth",5);
map.put("sixth",6);
map.put("seventh",7);
map.put("eighth",8);
map.put("ninth",9);
Iterator iterator= map.entrySet().iterator();
while(iterator.hasNext())
{
Entry entry =(Entry)iterator.next();
System.out.println(" entries= "+entry.getKey().toString());
}
}
}
我想检索如下密钥
first second third fourth fifth sixth .....
但它在我的输出中以如下随机顺序显示
OUTPUT
ninth eigth fifth first sixth seventh third fourth second
【问题讨论】:
-
@bestsss:我采取相反的方法:使用满足您要求的最简单的类型。除非您需要维护插入顺序,否则为什么要使用更复杂(且成本更高)的类型?绝大多数时候,HashMap 对我来说都很好。它完全按照罐头上说的做,仅此而已 - 你为什么这么不喜欢它?
-
@bestsss:相反,我相对很少迭代地图——我更有可能只使用它来获取/放置。更重要的是,当我使用
HashMap而不是LinkedHashMap时,我实际上是在表达我不关心订购的事实。 -
@bestsss: 是的,但是
IdentityHashMap在行为方面通常不是您想要的 ;) 我个人对 Java 中的地图类的主要不满是没有 .NET 的 @987654328 等价物@ 它可以让你概括相等关系。 -
@bestsss:也许我们编写的应用程序非常不同 :) 我喜欢使用最适合我实际需求的类型。使用功能更全面的类型表明我可能需要那些额外的功能...当我以后的需求扩展时,这会使我更难找到不同的类型。
标签: java