Language/Java
Java8 객체 List 에서 중복값 제거
김짜이상
2020. 7. 31. 17:21
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 주소)
반응형