Java 8 个代码用于连接一个字符串列表而不重复

Java 8 code to concatenate a List of Strings without duplicates

我有一个 Hit class 和一个 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, EU,OF,UN"。我怎样才能在我的 Set 中只得到 "EU,OF,UN"?谢谢!

如果 Hit::getList returns 一个 String 的逗号分隔元素,您必须拆分 String

这将生成一个 String[],可用于生成 Stream<String>

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

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