공부한것들을 정리하는 블로그 입니다.
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
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()을 사용
'JAVA > 공부' 카테고리의 다른 글
Java Coding Best Practices And Standards (0) | 2022.10.28 |
---|---|
IntelliJ 한글 깨짐 (IntelliJ/Gradle/터미널/콘솔/file/컴파일/빌드/VM) (0) | 2022.08.04 |
자바의신 부록, 요약본 (0) | 2022.08.01 |
자바의신 20장 java.lang (0) | 2022.07.12 |
자바의신 19장 JVM (0) | 2022.07.12 |
링크) 왜 Enum을 사용할까? (0) | 2022.05.26 |
String, StringBuffer, StringBuilder 차이점 (0) | 2022.05.18 |
추상클래스와 인터페이스 (0) | 2022.05.18 |