Java 8 Stream.distinct() 列表去重示例

Java 8 Stream.distinct() 示例

在这篇文章里,我们将提供Java8 Stream distinct()示例。 distinct()返回由该流的不同元素组成的流。distinct()是Stream接口的方法。distinct()使用hashCode()和equals()方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。如果distinct()正在处理有序流,那么对于重复元素,将保留以遭遇顺序首先出现的元素,并且以这种方式选择不同元素是稳定的。在无序流的情况下,不同元素的选择不一定是稳定的,是可以改变的。distinct()执行有状态的中间操作。在有序流的并行流的情况下,保持distinct()的稳定性是需要很高的代价的,因为它需要大量的缓冲开销。如果我们不需要保持遭遇顺序的一致性,那么我们应该可以使用通过BaseStream.unordered()方法实现的无序流。

1. Stream.distinct()

distinct()方法的声明如下:

Stream distinct()

它是Stream接口的方法。在此示例中,我们有一个包含重复元素的字符串数据类型列表

DistinctSimpleDemo.java

  1. package com.concretepage;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.stream.Collectors;
  5. public class DistinctSimpleDemo {
  6. public static void main(String[] args) {
  7. List list = Arrays.asList("AA", "BB", "CC", "BB", "CC", "AA", "AA");
  8. long l = list.stream().distinct().count();
  9. System.out.println("No. of distinct elements:"+l);
  10. String output = list.stream().distinct().collect(Collectors.joining(","));
  11. System.out.println(output);
  12. }
  13. }
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章