스마트웹앱콘텐츠전문가/JAVA

[JAVA]LIST + LIST = LIST 해보자

9D4U 2023. 12. 13. 14:06
반응형

안녕하세요.

 

원더보이 입니다.

 

 

 

 

 

개발하면서

 

한번 쯤은 고민하셨을거라 생각이 되는데요.

 

 

리스트끼리 합칠 수는 없을까?

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