스마트웹앱콘텐츠전문가/JAVA
[JAVA]LIST + LIST = LIST 해보자
9D4U
2023. 12. 13. 14:06
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