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());
我有一个 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());