728x90
반응형
안녕하세요.
원더보이 입니다.

개발하면서
한번 쯤은 고민하셨을거라 생각이 되는데요.
리스트끼리 합칠 수는 없을까?
OR
중복된 거는 깔끔하게 하나만 남기고 깔끔하게 리스트끼리 합칠 수 없을까?

JAVA Stream API를 활용하여 깔끔하게 합칠 수 있습니다.
List<Object> list1 = new ArrayList<>();
List<Object> list2 = new ArrayList<>();
// list1과 list2에 데이터 추가
List<Object> combinedList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.sorted()
.collect(Collectors.toList());
//두 개의 List를하나로 합치고 중복을 제거한 후, 정렬을 적용
Stream.concat() 메소드를 사용하여 두 개의 List를 하나로 합칩니다. 그런 다음 distinct() 메소드를 사용하여 중복을 제거하고 sorted() 메소드를 사용하여 정렬을 적용합니다. 마지 막으로 collect() 메소드를 사용하여 결과를 List로 수집합니다
참, 쉽죠~잉!
반응형
더 나아가기)
Stream ~ .sorted() 사용 방법 소개 : 정렬 기준 지정하기
//Stock 클래스의 no 필드로 오름차순 정렬하고, price 필드로 내림차순 정렬하기
List<Object> myList = new ArrayList<>();
myList.stream()
.sorted(Comparator.comparing(Stock::getNo).thenComparing(Stock::getPrice, Comparator.reverseOrder()))
.map(Stock::getName)
.forEach(System.out::println);
//Stock 클래스의 getNo(), getPrice(), getName() 메소드를 사용했습니다. 실제로 사용하
는 클래스와 필드에 맞게 수정필요.
리스트를 합치는 또 다른 방법)
○ addAll() 메서드 사용 :
List<T> list = new ArrayList<>();
list.addAll(list1);
list.addAll(list2);
return list;
○ Stream flatMap() 사용 : 중복된 요소 제거 가능
List<T> list = Stream.of(list1, list2)
.flatMap(Collection::stream)
.collect(Collectors.toList());
return list;
728x90
'스마트웹앱콘텐츠전문가 > JAVA' 카테고리의 다른 글
쿼리 파라미터와 경로 파라미터의 차이점과 활용법 (0) | 2025.02.18 |
---|---|
[JAVA]Boolean null 처리 (0) | 2024.08.23 |
[JAVA]문자열을 배열로 만들기 해보자! (0) | 2023.12.13 |
[JAVA]서버에서 RequestBody 읽기 (0) | 2021.08.19 |
대소문자관련처리 (0) | 2021.06.14 |