Java8代码来连接字符串列表而不会出现两次重复出现

问题描述 投票:-1回答:1

我有一个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”?谢谢!

java java-8 java-stream collect
1个回答
1
投票

如果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());
© www.soinside.com 2019 - 2024. All rights reserved.