Я хочу отфильтровать список массивов, содержащий хеш-карты, используя потоковый API.
ArrayList<HashMap<String, Object>> resultslist = new ArrayList<HashMap<String, Object>>();
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
HashMap<String, Object> returndatas = new HashMap<String, Object>();
int colcnt = rs.getMetaData().getColumnCount();
for (int i = 1; i <= colcnt; i++) {
if (rs.getObject(i) instanceof BigInteger) {
returndatas.put(rs.getMetaData().getColumnName(i), rs.getInt(i));
} else {
returndatas.put(rs.getMetaData().getColumnName(i), rs.getObject(i));
}
}
resultslist.add(returndatas);
}
return resultslist;
Вышеуказанный метод возвращает resultslist
. Теперь я хочу отфильтровать этот список по некоторому условию и собрать новый список массивов хеш-карт.
Например, я хочу выбрать хеш-карты с нулевым значением, а строка "parent_item_id".
Я попробовал следующее.
ArrayList<HashMap<String, Object>> access_collections;
ArrayList<HashMap<String, Object>> reducedList = access_collections.stream()
.filter((HashMap<String, Object> hasmap) -> hasmap.entrySet().stream().anyMatch(e -> e.getKey().equals("parent_item_id") && e.getValue().equals(0)))
.collect(Collectors.toList());