下面是从结果集中收集 listofmap 并检查特定产品的 listofmap 的代码,如果产品存在则获取该 map 。 请帮我用 java8 做这件事
List<Map<String,Object>> lmProducts = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
try {
if(resultSet.next()){
System.out.println("PRODUCT\t PRICE\t QUANTITY");
do{
map = new HashMap<String, Object>();
map.put("NAME", resultSet.getString("NAME"));
map.put("PRICE", resultSet.getString("PRICE"));
map.put("QUANTITY", resultSet.getString("QUANTITY"));
System.out.println(resultSet.getString("NAME")+"\t "+resultSet.getInt("PRICE")+"\t "+resultSet.getInt("QUANTITY"));
lmProducts.add(map);
}while (resultSet.next());
}
}catch (SQLException e){
System.out.println("Exception while processing Resultset: "+e.toString());
}
//尝试通过检查关键条件获取mProduct map
Map<String, Object> mProductMap = new HashMap<String, Object>();
mProductMap = lmProducts.stream().filter(m -> m.get("NAME").toString().equalsIgnoreCase(sProductName)).collect(to)
最佳答案
您可以使用Collectors.toMap
收集
从 map 组合的所有条目。
Map<String, Object> mProductMap = lmProducts.stream()
.flatMap(a -> a.entrySet().stream()) // stream of entries of all maps
// entries with specific key and value combination
.filter(m -> m.getKey().equals("NAME") && m.getValue().toString().equalsIgnoreCase(sProductName))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
关于java 8 过滤一个 ListOfMap 用于检查一个键是否存在,如果存在则收集一个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897874/