我使用了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/

10-11 19:53