📜  Java中的 IntStream distinct() 示例(1)

📅  最后修改于: 2023-12-03 15:31:52.810000             🧑  作者: Mango

IntStream distinct() 在Java中的使用示例

在Java中,IntStream是处理int值集合的一种便捷方法。IntStream类提供了很多有用的方法,其中一个是distinct()方法。本文将介绍IntStream distinct()方法的作用以及在Java中的使用示例。

作用

IntStream distinct()方法用于去除IntStream中的重复元素,返回具有唯一元素的新IntStream。

用法
示例1:去除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
示例2:去除随机生成的IntStream中的重复元素
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
示例3:同时取出IntStream里面的重复元素和非重复元素
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收集经过不同分类的列表。