如何将LinkedHashMap
滚动到特定键?像这样:
LinkedHashMap<String,String> queque = new LinkedHashMap<String,String>();
queque.put("uno","uno");
queque.put("due","due");
queque.put("tre","tre");
queque.put("quattro","quattro");
queque.put("cinque","cinque");
Iterator i = queque.entrySet().iterator();
while(i.next().getKey().equals(quattro)) {
System.out.print(i.getKey() + ": ");
System.out.println(i.getValue());
i.next();
}
答案 0 :(得分:2)
您不必显式迭代(除非您真的想要)按键获取值:只需使用get()
方法:
System.out.println("quattro" + ": " + queque.get("quattro"));
如果要打印所有值,请执行以下操作:
Iterator i = queque.entrySet().iterator();
while(i.hasNext()) {
Map.Entry<String, String> me = i.next();
if (me.getKey() == "quattro") break;
System.out.println(me.getKey() + ": " + me.getValue());
}
或者,更优雅一点:
for (Map.Entry<String, String> me : queque.entrySet()) {
if (me.getKey() == "quattro") break;
System.out.println(me.getKey() + ": " + me.getValue());
}
更多要点:
如果您不需要按添加顺序存储元素,请使用HashMap
而不是LinkedHashMap
,因为前者更快。如果您希望存储元素已排序,请使用TreeMap
(但要注意它比其他类型的Map
慢)。
在Java中创建容器实例时,最好使用 interface (如Map
,List
或Set
)左侧部分分配和实施(如HashMap
,ArrayList
等)在右侧部分,因为它为您提供了更大的灵活性:如果您以后决定更改实现相同的接口(例如,如上所述使用HashMap
而不是LinkedHashMap
),您只需要更改创建此容器的代码的一行,而不是更改此容器的所有位置使用。
答案 1 :(得分:1)
如果你想用Iterator
做正确的事,你会做
Iterator<Entry<String, String>> i = queque.entrySet().iterator();
while (i.hasNext()) {
Entry<String, String> entry = i.next();
if ("quattro".equals(entry.getKey()))
break;
System.out.println(entry.getKey() + ": " + entry.getValue());
}
但这相当于使用增强型for循环:
for (Entry<String, String> entry : queque.entrySet()) {
if ("quattro".equals(entry.getKey()))
break;
System.out.println(entry.getKey() + ": " + entry.getValue());
}
使用Iterator
,您必须检查hasNext()
,然后每个循环调用next()
一次(!),否则您的迭代器将前进两个元素。您也不应该将String
与==
进行比较,而这只是不起作用。
答案 2 :(得分:1)
听起来你应该对我使用TreeMap
。然后你只需使用TreeMap.headMap()
。