[Java] 자바의정석 독서 #26 - 컬렉션 마무리하기

2025. 12. 4. 21:41·언어공부/Java | Kotlin

https://dev-dx2d2y-log.tistory.com/127

 

[CS] 자바의정석 독서 #18 - 컬렉션은 무엇인가?

이전까지는 String, StringBuffer, StringBuilder를 읽어봤고, 원래 그 다음은 내용은 Math 클래스와 BigInteger, BigDecimal, 포맷팅, 날짜형식 등이 있었는데, 솔직히 좀 속성으로 자바에 대해 알아보고 싶기도하

dev-dx2d2y-log.tistory.com

11월 20일부터 12월 4일까지 약 2주동안 컬렉션에 대해서 글을 올렸다.

사실 11월 말에 RFR도하고 자바스크립트도하고 간단한 아작스도 만들어보고 JVM의 기초에 대해서 알아보기도하고 상당히 많은 것들을 시작했는데, 컬렉션이 그 선두주자라고 할 수 있으려나

 

여기서는 약간의 최종정리이자 현재까지 올린 컬렉션 게시글을 한 번에 정리해보는 시간을 가져보려한다

약간 이게 상위클래스고 여기에 링크될 게시글들이 이 클래스의 하위클래스가 되는 셈이다. 보통은 상위클래스부터 코딩하긴하지만


컬렉션

컬렉션은 복수의 데이터군을 다루기 위한 데이터구조다. 그냥 편리한 배열 정도로 이해하면 된다. 어차피 컬렉션은 내부적으로 배열을 쓰는게 기본이니까..

 

컬렉션은 대략적으로 이렇게 구성되어있다.


Iterable / Iterator

https://dev-dx2d2y-log.tistory.com/131

 

[CS] 자바의 정석 독서 #21 - 이터레이터

리스트의 메서드를 살펴보다보면 ListIterator라는 자료구조가 등장하는데, 이는 Iterator의 성능을 향상시킨 버전이다.이터레이터는 컬렉션의 상위클래스이며, 구버전으로는 Enumeration이 있다. 즉,

dev-dx2d2y-log.tistory.com

이터레이터는 연속된 자료구조에서 다음자료를 읽어오는 방법을 표준화한 것이다.

이터레이터와 이터러블이 구현되어 있어 컬렉션은 배열보다 쉽게 다음자료를 읽어올 수 있게된다.


List

https://dev-dx2d2y-log.tistory.com/128

 

[CS] 자바의정석 독서 #19 - ArrayList, Vector, LinkedList

보통 개발유튜브 같은 곳에서 "프로젝트는 어떻게 진행해야할까요? 뭐부터 시작해야할까요? 그냥 완벽히 공부하고 시작하면 안될까요?"라는 질문에 대해서 "그냥 시작해라"라고하는데, 그래서

dev-dx2d2y-log.tistory.com

요소들을 중복을 허용하여 저장한다면 모두 List에 해당한다. 대표적으로 가변크기의 배열을 지원하는 ArrayList가 있으며, 컬렉션이 등장하기 전에는 Vector가 사용되었다.

 

ArrayList, Vector에서 추가 및 삭제기능을 향상시키면 LinkedList가 된다.

 

https://dev-dx2d2y-log.tistory.com/130

 

[CS] 자바의 정석 독서 #20 - 스택과 큐 in Java

앞으로 스택과 큐에 대해서 다뤄볼 건데,스택과 큐는 '특정 조건을 만족하기만하면 스택 또는 큐이다.'라는 것이다. 큐의 구현체로는 LinkedList가 있는데, LinkedList는 큐의 '가장 처음 저장한 데이

dev-dx2d2y-log.tistory.com

컬렉션의 하위클래스로는 스택과 큐가 있다. 사실 그렇게 중요하지는 않은데 자료구조와 알고리즘에 있어서 중요하므로 작성했다.


HashSet | HashMap

https://dev-dx2d2y-log.tistory.com/143

 

[Java] 자바의 정석 독서 #23 - HashSet과 HashMap

평일에 책을 읽으면 5일 중에서 자바 2 자바스크립트 2 C 계열 1로 가져가려고 했는데, 자바는 재밌어. 자바 3 자바스크립트 2 C 계열 0으로 가져가버렸다ㄷㄷ https://dev-dx2d2y-log.tistory.com/127 [CS] 자바

dev-dx2d2y-log.tistory.com

값을 중복해서 저장하는 것을 허용하지 않으면 Set, key-value 형태로 값을 저장하면 Map에 해당한다. HashSet과 HashMap은 각각 대표적인 Set과 Map의 구현체이다.

 

https://dev-dx2d2y-log.tistory.com/146

 

[Java] 자바의 정석 독서 #24 - 해싱과 해싱함수

https://dev-dx2d2y-log.tistory.com/143 [Java] 자바의 정석 독서 #23 - HashSet과 HashMap평일에 책을 읽으면 5일 중에서 자바 2 자바스크립트 2 C 계열 1로 가져가려고 했는데, 자바는 재밌어. 자바 3 자바스크립트

dev-dx2d2y-log.tistory.com

HashSet은 요소의 중복을 허용하지 않으며, HashMap은 key값의 중복을 허용하지 않는다. 그리고 이 중복여부를 확인할 때에는 hashCode() 메서드를 통한 해시값으로 중복을 구분한다.


배열 | 컬렉션 관련 클래스

https://dev-dx2d2y-log.tistory.com/141

 

[CS] 자바의 정석 독서 #22 - Arrays로 배열 다루기

어쩌다보니 프로그래밍 언어와 CS 지식도 쓰리트랙으로 나눠서 배우게 되었다. 자바, 자바스크립트, C 계열언어.. 특히 자바는 자바의 정석과 JVM 구동방식을 나눠서 배우다보니 정작 자바에 쏟을

dev-dx2d2y-log.tistory.com

일반적인 '배열'을 다룰 때에는 Arrays 클래스에 저장된 메서드로 배열을 다루면 되고,

 

https://dev-dx2d2y-log.tistory.com/147

 

[Java] 자바의 정석 독서 #25 - Collections 클래스

https://dev-dx2d2y-log.tistory.com/141 [CS] 자바의 정석 독서 #22 - Arrays로 배열 다루기어쩌다보니 프로그래밍 언어와 CS 지식도 쓰리트랙으로 나눠서 배우게 되었다. 자바, 자바스크립트, C 계열언어.. 특히

dev-dx2d2y-log.tistory.com

'컬렉션'에 대해서 다룰 때에는 Collections 클래스에 저장된 메서드를 사용하면 된다.


이렇게 컬렉션에 대해서 글을 정리해보았다.

 

ArrayList는 배열기반 가변크기의 배열을 지원한다. 순차적인 데이터의 추가와 삭제에서는 가장 빠르며, 임의의 요소에 접근하는 것이 가장 빠르다.

LinkedList는 리스트의 각 요소들마다 다음노드의 위치를 저장시켜둔 리스트의 구현체다. 1번의 데이터부터 다음노드의 위치를 하나하나 찾아가야하기 때문에 임의의 요소에 접근하는 것이 느리다. 다만 순차적이 아닌 데이터 추가와 삭제는 빠른 편이다.

HashMap은 key-value 기반의 자료구조다. key값을 중복으로 사용할 수 없기 때문에 데이터의 추가, 삭제, 검색, 접근성이 뛰어나다. 검색에서 최고성능을 보인다.

 

이외에도

HashSet (Set의 구현체지만 HashMap을 통해서 구현했다.)

TreeMap (트리구조로 저장한 Map.정렬과 검색에서 용이하나 검색성능은 HashMap보다 떨어진다.)

Stack

Queue

Properties (Hashtable의 구현체)

TreeSet

LinkedHashMap (HashMap의 저장순서 유지기능을 추가)

LinkedHashSet (HashSet에 저장순서 유지기능을 추가)

 

정도가 있겠다.

솔직히 모든 컬렉션을 외워두고 "음.. 이런 상황이니까 이 컬렉션을 써야지!"는 불가능하고 그냥 대충 특성만 알아두었다가 적재적소에 데이터를 사용하는 것이 중요하다.

 

실제상황에서는 이러한 특성들을 고려해서 배열이 필요하면 ArrayList, 중복을 허용하지 않으면 HashSet, key-value 구조면 HashMap 정도로 사용하던가 하고.. 다만 각 컬렉션 구현체마다 성능 차이가 있으므로 저 3가지를 기반으로 몇 가지 구현체들을 더 알아두면 좋을듯하다.

 

스레드까지 남은 챕터 1개

'언어공부 > Java | Kotlin' 카테고리의 다른 글

[Java] 자바의 정석 독서 #28 - 제너릭 와일드카드, 공변성  (1) 2025.12.23
[Java] 자바의 정석 독서 #27 - 제너릭 기초  (1) 2025.12.18
[Java] 자바의 정석 독서 #25 - Collections 클래스  (0) 2025.12.04
[Java] 자바의 정석 독서 #24 - 해싱과 해싱함수  (0) 2025.12.03
[Java] 자바의 정석 독서 #23 - HashSet과 HashMap  (0) 2025.12.01
'언어공부/Java | Kotlin' 카테고리의 다른 글
  • [Java] 자바의 정석 독서 #28 - 제너릭 와일드카드, 공변성
  • [Java] 자바의 정석 독서 #27 - 제너릭 기초
  • [Java] 자바의 정석 독서 #25 - Collections 클래스
  • [Java] 자바의 정석 독서 #24 - 해싱과 해싱함수
Radiata
Radiata
개발을 합니다.
  • Radiata
    DDD
    Radiata
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • 신년사 (3)
        • 2025년 (2)
        • 2026년 (1)
      • CS (59)
        • JVM (12)
        • 백엔드 (20)
        • 언어구현 (1)
        • 객체지향 (1)
        • 논리회로 (5)
        • 컴퓨터구조 (9)
        • 데이터베이스 (1)
        • 컴퓨터 네트워크 (10)
      • 언어공부 (64)
        • Java | Kotlin (48)
        • JavaScript | TypeScript (9)
        • C | C++ (6)
      • 개인 프로젝트 (11)
        • [2025] Happy2SendingMails (3)
        • [2026] 골든리포트! (8)
        • [2026] 순수자바로 개발하기 (0)
        • 기타 이것저것 (0)
      • 팀 프로젝트 (29)
        • [2025][GDG]홍대 맛집 아카이빙 프로젝트 (29)
      • 알고리즘 (13)
        • 백준풀이기록 (11)
      • 놀이터 (0)
      • 에러 수정일지 (2)
      • 고찰 (24)
        • CEOS 23기 회고록 (2)
  • 블로그 메뉴

    • CS
    • 언어공부
    • 개인 프로젝트
    • 팀 프로젝트
    • 알고리즘
    • 고찰
    • 신년사
    • 컬러잇 개발블로그
  • 링크

    • 컬러잇 개발블로그
  • 공지사항

  • 인기 글

  • 태그

    144
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Radiata
[Java] 자바의정석 독서 #26 - 컬렉션 마무리하기
상단으로

티스토리툴바