如何遍历成对的数组列表以检索指定键的值?

时间:2018-11-29 03:04:37

标签: java arrays keyvaluepair

我一直在尝试用Java编写一个函数Retrieve,该函数接受一个键并从Pairs的数组列表中返回一个值。有什么建议么?

std::shared_ptr<BasicChildTechnology> getTechnologyObject(const label_t& label)
{
    return lookup[label]->build();
}

1 个答案:

答案 0 :(得分:1)

您可以将retrieve方法的逻辑更正为:

public V retrieve(K key) {
    // iterating on each element of the list would suffice to check if a key exists in the list 
    for (Pair<K, V> pair : set_of_pairs) { // iterating on list of 'Pair's
        if (pair.getKey().equals(key)) {  // 'equals' instead of ==
            return pair.getValue();
        }
    }
    return null;
}

此外,可以使用将其简化为逻辑,并按照shmosel的说明进行修改

public V retrieveUsingStreams(K key) {
    return set_of_pairs.stream()
            .filter(pair -> pair.getKey().equals(key)) // the 'if' check
            .findFirst() // the 'return' in your iterations
            .map(Pair::getValue) // value based on the return type
            .orElse(null); // else returns null
}