1.方法介绍
【方法签名】Stream<T> distinct();
【方法属性】非终结方法
【方法参数】无参
【方法作用】将stream中的元素去重
【返回值】去掉重复元素后的stream
【注意事项】如果是自定义类型的元素,则如果想实现去重,必须重写 equals()方法与hashCode()方法
2.案例代码
2.1 自定义类代码
【注意】 : 必须要重写equals() 方法与 hashCode() 方法
class Person{
private String name;
private Integer age;
public Person() {
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
......getter/setter 方法 ,这里省略了,各位coder自己补充
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name) &&
Objects.equals(age, person.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.2 主类代码
package com.northcastle.I_stream;
import java.util.ArrayList;
import java.util.Objects;
import java.util.stream.Stream;
public class StreamTest09Distinct {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("300");
list.add("200");
list.add("1");
list.add("300");
list.add("1");
Stream<String> streamList = list.stream();
streamList.distinct().forEach(System.out::println);
System.out.println("=================");
ArrayList<Person> personList = new ArrayList<>();
personList.add(new Person("盖聂",20));
personList.add(new Person("小庄",18));
personList.add(new Person("盖聂",20));
personList.add(new Person("天明",8));
personList.stream()
.distinct()
.forEach(System.out::println);
}
}
2.3 执行结果
3.完成
Congratulations! You are one step closer to success!
|