我试图在哈希表中执行更复杂的搜索,在下面的示例中,我可以找到哈希表是否包含值列表,但前提是它包含所有列表(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);
}
}
}
答案 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的选项。