Java 8 Stream. Distinct () 示例
在这篇文章里,我们将提供 java 8 Stream distinct()示例。 distinct ()返回由该流的 不同元素组成的流 。distinct()是Stream接口的方法。distinct()使用 hashCode ()和equals() 方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。如果distinct()正在处理 有序流,那么对于重复元素,将保留以遭遇顺序首先 出现的元素,并且以这种方式选择不同元素是稳定的。在 无序流的情况下,不同元素的选择不一定是稳定的 ,是可以改变的。distinct()执行有状态的中间操作。在有序流的并行流的情况下,保持distinct()的稳定性是需要很高的代价的,因为它需要大量的缓冲开销。如果我们不需要保持遭遇顺序的一致性,那么我们应该可以使用通过BaseStream.unordered()方法实现的无序流。
1. Stream.distinct()
distinct()方法的声明如下:
Stream<T> distinct()
它是 Stream 接口的方法。在此示例中,我们有一个包含重复元素的 字符串 数据类型列表
DistinctSimpleDemo.java
- package com.concretepage;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- public class DistinctSimpleDemo {
- public static void main (String[] args) {
- List<String> list = Arrays.asList( “AA” , “BB” , “CC” , “BB” , “CC” , “AA” , “AA” );
- long l = list.stream().distinct().count();
- System.out.println( “No. of distinct elements:” +l);
- String output = list.stream().distinct().collect(Collectors.joining( “,” ));
- System.out.println(output);
- }
- }