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

Java 8代码,用于连接字符串列表而不重复,java,java-8,java-stream,collect,Java,Java 8,Java Stream,Collect,我有一个命中类和一个列表,其中包含以下内容: {{id=1, list="EU"}, {id=2, list="EU,OF,UN"}} 如何在不出现重复出现的情况下获得一些串联列表 我试过这样的方法: Set<String> sourceList = alertHit.stream() .map(Hit::getList) .collect(Collectors.toSet()); Set sourceList=al

我有一个
命中
类和一个
列表
,其中包含以下内容:

{{id=1, list="EU"}, {id=2, list="EU,OF,UN"}}
如何在不出现重复出现的情况下获得一些串联列表

我试过这样的方法:

Set<String> sourceList = alertHit.stream()
                .map(Hit::getList)
                .collect(Collectors.toSet());
Set sourceList=alertHit.stream()
.map(点击::获取列表)
.collect(收集器.toSet());

但是在我的
源代码列表中,我得到了“EU,EU,OF,UN”。如何在我的
集合中仅获取“EU、OF、UN”?谢谢

如果
Hit::getList
返回逗号分隔元素的
字符串,则必须拆分该
字符串

这将生成一个
字符串[]
,可用于生成

最后,您需要使用
flatMap
而不是
map
,以便获得所有这些
字符串的平面
流。这是您应该收集到
集合中的

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

谢谢,我急需修复此问题,没有时间了解java 8的所有更改,我将查看.flatMap。