Java 8过滤ListOfMap以检查键是否存在,如果存在则收集地图

Har*_*ddy 5 java hashmap java-8 java-stream collectors

以下是用于从结果集中收集listofmap并检查特定产品的listofmap的代码,如果产品存在,则获取该映射。请帮我在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());
}
Run Code Online (Sandbox Code Playgroud)

//通过检查关键条件来尝试获取mProduct映射

Map<String, Object> mProductMap     =   new HashMap<String, Object>();
mProductMap     =   lmProducts.stream().filter(m -> m.get("NAME").toString().equalsIgnoreCase(sProductName)).collect(to)
Run Code Online (Sandbox Code Playgroud)

Nam*_*man 2

您可以collect使用 合并地图中的所有条目 Collectors.toMap

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));
Run Code Online (Sandbox Code Playgroud)