首页 > 解决方案 > Java 8 代码连接一个不重复的字符串列表

问题描述

我有一个Hit类和一个List<Hit>包含以下内容的类:

{{id=1, list="EU"}, {id=2, list="EU,OF,UN"}}

如何在不重复出现的情况下获得一些连接列表?

我试过这样的事情:

Set<String> sourceList = alertHit.stream()
                .map(Hit::getList)
                .collect(Collectors.toSet());

但我的sourceList Set. 我怎样才能在我的 中只获得“EU,OF,UN” Set?谢谢!

标签: javajava-8java-streamcollect

解决方案


如果Hit::getList返回一个String逗号分隔的元素,则必须拆分该String.

这将产生一个String[]可用于产生一个Stream<String>.

最后,您需要使用flatMap而不是以map获得Stream所有这些Strings 的单位。那就是Stream你应该收集到一个Set.

Set<String> sourceList = 
    alertHit.stream()
            .flatMap(h -> Arrays.stream(h.getList().split(",")))
            .collect(Collectors.toSet());

推荐阅读