java lambda指定返回集合
需求:去重并且最后的展示顺序是:4 5 1 2 3
方案一、直接使用hashSet去重
@Test
public void testLambdaCollectors(){
ArrayList<Integer> list = Lists.newArrayList(4,4,5,5,1, 1, 2, 2, 3, 3, 3, 3);
Set<Integer> set = list.stream().collect(Collectors.toSet());
set.forEach(System.out::println);
}
// 控制台打印结果:1 2 3 4 5
结果不尽人意,去重实现了,但是排序却不是想要的结果
方案二、直接使用LinkedHashSet去重
@Test
public void testLambdaCollectors(){
ArrayList<Integer> list = Lists.newArrayList(4,4,5,5,1, 1, 2, 2, 3, 3, 3, 3);
Set<Integer> set = list.stream().collect(Collectors.toCollection(LinkedHashSet::new));
set.forEach(System.out::println);
}
// 控制台打印结果:4 5 1 2 3
指定LinkedHashSet进行存储时,按照元素的进入先后进行排序,完成操作
总结:使用当使用stream
流时,如果默认提供的toSet()
和toList()
无法满足需求时,可以通过Collectors.toCollection(container)
执行返回的容器