Java中Stream中的distinct()可以排除一些List里面的重复数据,包括List对象也是可以的,下面先来看一下Java Stream distinct()如何删除重复的List数据吧!
这个案例是使用Stream distinct()方法去除List基本类型里面的重复数据,方法如下:
jshell> List<Integer> list = List.of(1, 2, 3, 4, 3, 2, 1); list ==> [1, 2, 3, 4, 3, 2, 1] jshell> List<Integer> distinctInts = list.stream().distinct().collect(Collectors.toList()); distinctInts ==> [1, 2, 3, 4]
如果List里面的是一个Java对象,想要去除List对象里面的重复数据,可以类似这样操作即可:
package com.tpyyes.java; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class JavaStreamDistinct { public static void main(String[] args) { List<Data> dataList = new ArrayList<>(); dataList.add(new Data(10)); dataList.add(new Data(20)); dataList.add(new Data(10)); dataList.add(new Data(20)); System.out.println("Data List = "+dataList); List<Data> uniqueDataList = dataList.stream().distinct().collect(Collectors.toList()); System.out.println("Unique Data List = "+uniqueDataList); } } class Data { private int id; Data(int i) { this.setId(i); } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return String.format("Data[%d]", this.id); } }