관리 메뉴

공부한것들을 정리하는 블로그 입니다.

List 2개 합치기. ArrayList.addAll() vs Collections.addAll() 본문

JAVA/공부

List 2개 합치기. ArrayList.addAll() vs Collections.addAll()

호 두 2022. 10. 25. 13:36
반응형

 

1. List 2개 합치기

1. List.addAll()
2. Collections.addAll()
3. Stream.of() + flatMap() + collect()

 

https://hianna.tistory.com/560

 

[Java] List 2개 합치기

Java에서 2개의 List를 합쳐서 하나로 만드는 방법입니다. List.addAll() Collections.addAll() Stream.of() + flatMap() + collect() 1. List.addAll() boolean addAll​(Collection<? extends E> c) java.util.L..

hianna.tistory.com

 

 

2. 결론, ArrayList.addAll()을 사용

* ArrayList에서 addAll() 메소드 사용시 Collection 객체를 파라미터로 입력받아서 List의 뒤에 이어붙여 주는 것을 확인 가능

 

* ArrayList.addAll 보다 Collections.addAll의 성능이 더 좋을 수 있다는 글을 확인
 (1) ArrayList의 addAll()은 실행 도중 Arrays.asList가 실행되며 array 뒤에 붙을 List<E>가 생성되는 단계가 있음. Collections의 addAll() 메서드 사용시 이 단계를 생략하고, Iterable<E>를 array의 반복으로 대체 (중개자 List가 생성되지 않음)
   - 참고 : https://stackoverflow.com/questions/3343766/why-is-collections-addall-supposed-to-be-faster-than-c-addall
 (2) Collections.addAll은 컬렉션에 몇 가지 요소만 반복적으로 추가할 때 더 빠를 수 있지만 이 경우가 성능 병목 현상이 되지는 않음
 (3) 이펙티브 자바(아이템 28. 배열보다는 리스트를 사용하라) 에서도 배열보다는 제네릭 타입의 사용을 권장 (컴파일타임 타입체크로 안전성 보장의 차이)
 (4) 결론, ArrayList.addAll()을 사용

 

 

반응형
Comments