如何在哈希表中搜索多个键

时间:2015-01-26 15:58:39

标签: java data-structures hashtable

我试图在哈希表中执行更复杂的搜索,在下面的示例中,我可以找到哈希表是否包含值列表,但前提是它包含所有列表(AND)。

我希望执行以下查询:“(key1 = value或key2 = value)和key3!= value”

所以我正在寻找能够做到的模块。

  //  The query parameter class
  public class QueryParameter {
      public String attribute;
      public String value;  
  }

//  Load the hash table
Hashtable<String, String> singleRow = new Hashtable<>();
for (int count = 0; count < someValue; count++) {   
    logRow.put(getKey(count), getValue(count));
}

//  Query the hash table
public void queryTable(QueryParameter... parameters) {

    Boolean rowMatches = true;
    for (QueryParameter parameter : parameters) {
        if (null != logRow.get(parameter.attribute)) {
            rowMatches = rowMatches && logRow.get(parameter.attribute).equals(parameter.value);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

使用Java 8,您可以使用流API。 由于地图本身不是集合​​,因此Yo将与地图中的entrySet一起使用。

描述here如何执行以下操作:

    Map<Integer, String> monthsWithLengthFour = 
            MONTHS.entrySet()
            .stream()
            .filter(p -> p.getValue().length() == 4)
            .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));

你也有非Java 8的选项。