我使用了LinkedHashMap<String, Double>
。我想从中取不同的价值。如果是Array
,我们可以使用.get[2]
,.get[5]
等作为第二和第五值。但是对于LinkedHashMap<String, Double>
怎么做。我用下面的代码。但是它将打印LinkedHashMap<String, Double>
中包含的所有值。我需要分开考虑。
Set set = mylist.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry me1 = (Map.Entry)i.next();
System.out.print(me1.getKey());
System.out.println(me1.getValue());
最佳答案
您可以使用LinkedHashMap#get(Object key)
方法
它将返回与key参数对应的值。由于您的键是String
,因此不能使用int
来检索它们。
例
如果您的LinkedHashMap
包含["key", 2.5]
,则调用
System.out.println(lnkHashMap.get("key"));
将打印
2.5
加成
如果您使用的是java-8,则可以使用
Stream
对象来解决。Double result = hashmap.values()
.stream()
.skip(2)
.findFirst()
.get();
这将跳过两个第一个值,直接到达第三个值并返回它。
如果没有,这是一个解决方案
public <T> T getValueByIndex (Map<? extends Object, T> map, int index){
Iterator<T> it = map.values().iterator();
T temp = null;
for (int i = 0 ; i < index ; i++){
if (it.hasNext()){
temp = it.next();
} else {
throw new IndexOutOfBoundsException();
}
}
return temp;
}
关于java - 如何从Java中的LinkedHashMap <String,Double>中获取单独的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35969224/