我有一个Hit类和一个列表alertHit,其中包含类似以下内容的内容:{{id = 1,list =“ EU”},{id = 2,list =“ EU,OF,UN”}}我怎样才能得到一些没有两次出现的串联列表?我做了这样的事情:
Set<String> sourceList = alertHit.stream()
.map(Hit::getList)
.collect(Collectors.toSet());
但是我的sourceList集中有一些“ EU,EU,OF,UN”。我如何才能在我的集合中仅获得“ EU,OF,UN”?谢谢!
如果Hit::getList
返回以逗号分隔的元素String
,则必须拆分该String
。
这将产生一个String[]
,可用于产生一个Stream<String>
。
最后,您需要使用flatMap
而不是map
来获得所有这些Stream
的固定String
。那是您应该收集到Stream
中的Set
。
Set<String> sourceList =
alertHit.stream()
.flatMap(h -> Arrays.stream(h.getList().split(",")))
.collect(Collectors.toSet());