给定字符串列表,需要使用java(stream)返回没有重复的字符串列表(单次出现) 我尝试过使用distinct,但它不会得到单一的准确性
答案 0 :(得分:2)
像这样......
List<String> result = Stream.of("A", "A", "BB", "C", "BB", "D")
.collect(Collectors.groupingBy(
Function.identity(),
Collectors.counting()))
.entrySet()
.stream()
.filter(x -> x.getValue() == 1L)
.map(Entry::getKey).collect(Collectors.toList());
System.out.println(result); // [C, D]
答案 1 :(得分:1)
可能是一个错误的问题,但你正在过滤列表中没有重复的条目......
所以这可行: 考虑一个列表,其中字符串C#和C ++是唯一没有重复的列表:
List<String> items = Arrays.asList("Java", "Java", "Java", "C++", "C", "C#", "C");
Map<String, Long> result = items.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);
Map<String, Long> filter = result.entrySet().stream().filter(x -> x.getValue() == 1)
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
System.out.println(filter);