java 8 过滤一个 ListOfMap 用于检查一个键是否存在,如果存在则收集一个映射

标签 java java-8 hashmap java-stream collectors

下面是从结果集中收集 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/

相关文章:

java - 删除源文件中的注释时,自动删除 Java 7 Annotation Processor 生成的文件

java - 再次在 Java 中进行字符串比较

java - 从流中收集某些元素

java - hashCode()、equals(Object) 和 compareTo(Class)

java - 将多个域链接到一份报告中的 HashMap - Java Eclipse

具有泛型、比较器和排序错误的 Java 类层次结构

java - 多线程和 Google App Engine Servlet

两个字符串数组的 Java 比较

java - ClasscastException 合并两个 LinkedHashMap

c - 16 位唯一键到 8 位数组索引(完美哈希)