본문 바로가기
Language/Java

[Java] 컬렉션 프레임워크 선택 매뉴얼

by 클레어몬트 2024. 10. 27.

https://claremont.tistory.com/entry/Java-API-%EC%BB%AC%EB%A0%89%EC%85%98-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%ACCollection-Framework

 

[Java API] 컬렉션 프레임워크(Collection Framework)

https://claremont.tistory.com/category/Computer%20Science/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0 'Computer Science/자료구조' 카테고리의 글 목록전자정보통신공학, 컴퓨터공학 전공claremont.tistory.comhttps://claremont.tistory.com/cat

claremont.tistory.com

 

 

[선택 가이드]

1. 순서 O, 중복 O : ArrayList()

※ 데이터가 많고, 추가/삭제 작업이 "앞쪽에서" 빈번한 경우에는 LinkedList()

 

 

2. 순서 X, 중복 XHashSet()

만약 순서가 필요하면 LinkedHashSet()

정렬된 순서가 필요하면 TreeSet()

 

 

(요소가 -값)

3. 순서 X, key: 중복 X / value: 중복 O : HashMap()

만약 순서가 필요하면 LinkedHashMap()

정렬된 순서가 필요하면 TreeMap()

 

 

<요소를 처리하기 전에 보관해야 하는 경우> : ArrayDeque()

우선순위에 따라 요소를 처리해야 한다면 PriorityQueue() 를 고려

(참고) PriorityQueue는 입력하는 요소에 우선순위를 부여하지만, 자주 사용하지는 않아 따로 설명하지는 않는다

 

 

 

[실무 선택 가이드]

'List' 의 경우 95% 이상 ArrayList() 를 사용

'Set' 의 경우 대부분 HashSet() 을 사용

'Map' 의 경우 대부분 HashMap() 을 사용

'Queue' 의 경우 대부분 ArrayDeque() 를 사용

 

(실무에서는 List와 Map이 가장 많이 쓰인다고 한다)

 

 

 

 

 

 

 

HashXXX은 hashing 기법을 사용하기 때문에 검색에 최고성능을 보인다 (해시 충돌이 적다는 가정하에)

 

참고 및 출처: 김영한의 실전 자바 - 중급 2편

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EC%A4%91%EA%B8%89-2