📅  最后修改于: 2023-12-03 15:31:52.810000             🧑  作者: Mango
在Java中,IntStream
是处理int值集合的一种便捷方法。IntStream
类提供了很多有用的方法,其中一个是distinct()
方法。本文将介绍IntStream distinct()
方法的作用以及在Java中的使用示例。
IntStream distinct()
方法用于去除IntStream中的重复元素,返回具有唯一元素的新IntStream。
int[] numbers = { 1, 3, 5, 1, 7, 7, 5, 9, 11, 9 };
IntStream stream = Arrays.stream(numbers);
IntStream distinctStream = stream.distinct();
distinctStream.forEach(System.out::println);
输出结果:
1
3
5
7
9
11
IntStream randomStream = new Random().ints(10, 1, 5);
randomStream.forEach(System.out::print); // output: 1241421243
System.out.println();
IntStream distinctStream = randomStream.distinct();
distinctStream.forEach(System.out::print); // output: 1243
输出结果:
1241421243
1243
int[] numbers = { 1, 3, 5, 1, 7, 7, 5, 9, 11, 9 };
IntStream stream = Arrays.stream(numbers);
Map<Boolean, List<Integer>> map = stream.boxed()
.collect(Collectors.partitioningBy(i -> Collections.frequency(Arrays.asList(numbers), i) > 1));
List<Integer> distinctList = map.get(false);
List<Integer> repeatList = map.get(true);
System.out.println("Distinct: " + distinctList);
System.out.println("Repeat: " + repeatList);
输出结果:
Distinct: [3,7,9,11]
Repeat: [1,5,1,7,7,5,9]
IntStream distinct()
方法返回的新IntStream中元素的顺序是不确定的。IntStream
对象转换成List
,请在distinct()
方法调用之前进行收集(boxed()
方法可以实现)。IntStream distinct()
方法是去除IntStream中的重复元素非常方便的方法。使用示例也很简单,只要将IntStream
对象调用distinct()
方法即可得到“I只肯定”元素的新IntStream。同时,可以使用Java 8中的Collectors
类将IntStream对象转换为List,并使用Map
收集经过不同分类的列表。