List 2개 합치기. ArrayList.addAll() vs Collections.addAll()
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()을 사용