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

标签 java arrays keyvaluepair

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

  ArrayList<Pair<K,V>> set_of_pairs = new ArrayList<Pair<K,V>>();
  public void insert(K key, V value) {
    Pair<K,V> pair = new Pair<K,V>(key,value);
    set_of_pairs.add(pair); 
  }

  public void traverse(Visitor<K,V> visitor) {       
  }

  public V retrieve(K key) {
   int i = 0;
   if (set_of_pairs.containsKeys(key) == false) {
      return null;
   }
   else {
      for(Pair<K,V> set_of_pairs: pair) {
         if (pair.getKey() == key) {
            return pair.getValue();
         }
      }      
    }
  }

最佳答案

您可以将 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
}

关于java - 如何遍历成对的数组列表以检索指定键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531236/

相关文章:

java - 在 Android 中调整和旋转图像

c++ - 对比较函数

java - 不同演示者的相同 fragment

java.util.stream.Collectors : Why is the summingInt implemented with an array?

arrays - 循环跳过已经完成的值

ios - addObjectsFromArray 不会将它们添加为新对象

PHP 和 MySQL - 使用数组填充选择下拉列表

java - 如何在值类型和键值对数量未知的情况下 HashMap JSON 的键值对

java - 使用 Java 8 查找两个日期之间的中间日期