Java에서 List 를 사용할때 중복된 값들을 제거하는 방법입니다.
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author zzai_sang
* @version 0.1.0
* @since 2020/07/15
*/
public class ObjectDupRemove {
public static void main(String[] args) {
final List<Hello> helloList = Arrays.asList(
new Hello("김상재", "zzaisang@gmail.com"),
new Hello("짜이상", "zzaisang@gmail.com"),
new Hello("상자이", "zzaisang@gmail.com"),
new Hello("상짜이", "zzaisang@gmail.com"),
new Hello("짜이상", "zzaisang@gmail.com")
);
final List<Hello> collect = helloList
.stream()
.collect(Collectors.toConcurrentMap(Hello::getName, Function.identity(), (p, g) -> p)).values()
.stream()
.collect(Collectors.toList());
System.out.println(helloList);
System.out.println(collect);
}
}
@ToString
@AllArgsConstructor
@Getter
class Hello{
String name;
String email;
}
비교할 대상(Hello의 name)을 지정해서 비교 후 중복 제거된 List 사용하면 된다.
결과값
[Hello(name=김상재, email=zzaisang@gmail.com), Hello(name=짜이상, email=zzaisang@gmail.com), Hello(name=상자이, email=zzaisang@gmail.com), Hello(name=상짜이, email=zzaisang@gmail.com), Hello(name=짜이상, email=zzaisang@gmail.com)] [Hello(name=상짜이, email=zzaisang@gmail.com), Hello(name=짜이상, email=zzaisang@gmail.com), Hello(name=상자이, email=zzaisang@gmail.com), Hello(name=김상재, email=zzaisang@gmail.com)]
모든 코드는 아래 경로에서 확인 가능합니다.
[https://github.com/zzaisang/algorithm/blob/master/src/main/java/other/study/ObjectDupRemove.java]
(GIT 주소)
반응형
'Language > Java' 카테고리의 다른 글
Java 프로그램 실행 과정 (JVM 동작 원리) (0) | 2022.04.17 |
---|---|
GC 동작 원리 (0) | 2022.04.17 |
객체 지향 설계 5가지 원칙 (SOLID) (0) | 2021.12.26 |
JVM 메모리 구조 (0) | 2021.12.11 |
Java8 List 중복값만 골라내기 (0) | 2020.08.09 |