상세 컨텐츠

본문 제목

[Stream] 스트림 중복 제거 : distinct() 메서드 예제

Java

by kwanghyup 2020. 6. 17. 09:17

본문

distinct()메소드가 적용되는 객체에 반드시 equals,hashcode메소드가 오버라이딩 되어있어야한다.

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return " name='" + name + '\'' + ", age=" + age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }
}

 

import java.util.Arrays;
import java.util.List;

public class DistinctExample {

    public static void main(String[] args) {
        List<Person> list = Arrays.asList(
                new Person("lee",33),
                new Person("lee",33),
                new Person("kim",37),
                new Person("kim",37),
                new Person("kim",37)
        );

        list.stream().distinct().forEach(System.out::println);

    }

}

관련글 더보기

댓글 영역