java动态集过滤器

java动态集过滤器,java,filter,functional-programming,Java,Filter,Functional Programming,您好,我是java函数式编程新手。我试图过滤一个贴图,如果元素在集合中,跳过它;否则处理它并将其放入集合中。 但是我发现这个集合看起来是静态的(没有被终端操作更新) 试试这个: HOSTING.entrySet() .stream() .filter(map -> s.add(map.getValue())) .collect(Collectors.toMap(p -> p.getKey(), p -&g

您好,我是java函数式编程新手。我试图过滤一个贴图,如果元素在集合中,跳过它;否则处理它并将其放入集合中。 但是我发现这个集合看起来是静态的(没有被终端操作更新)


试试这个:

    HOSTING.entrySet()
            .stream()
            .filter(map -> s.add(map.getValue()))
            .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue())).forEach((k, v) -> {
        System.out.println("show:" + v);
    });

另一种方法是可以将地图值转换为列表,然后可以在列表上轻松使用Distinct()

 List<String> result = HOSTING.values().stream().collect(Collectors.toList()); //convert map to list
 result.stream().distinct().collect(Collectors.toList());  // filtering the list

 System.out.println(result);
List result=HOSTING.values().stream().collect(Collectors.toList())//将地图转换为列表
result.stream().distinct().collect(Collectors.toList());//筛选列表
系统输出打印项次(结果);

s
是一个空集合,您对此有何期望?我将处理过的元素放入集合中。添加(v);谢谢你的回复,我仍然需要println方法中的映射。
    HOSTING.entrySet()
            .stream()
            .filter(map -> s.add(map.getValue()))
            .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue())).forEach((k, v) -> {
        System.out.println("show:" + v);
    });
 List<String> result = HOSTING.values().stream().collect(Collectors.toList()); //convert map to list
 result.stream().distinct().collect(Collectors.toList());  // filtering the list

 System.out.println(result);