JAVA

컬렉션(Collection, List/Set/Map)

서윤-정 2023. 9. 26. 12:29

❤ 배열의 문제점

1. 한 번 크기를 지정하면 변경할 수 없다.

- 공간 크기가 부족하면 에러가 발생 -> 할당 시 넉넉한 크기로 할당하게 됨 (메모리 낭비)

- 필요에 따라 공간을 늘리거나 줄일 수 없음

 

2. 배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불편하다.

- 추가, 삭제할 데이터부터 마지막 기록된 데이터까지 하나씩 뒤로 밀어내고 추가해야 함 (복잡한 알고리즘)

 

3. 한 타입의 데이터만 저장 가능하다.

 

 

 

❤ 컬렉션의 장점

1. 저장하는 크기의 제약이 없다.

 

2. 추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결된다.

- 자료를 구조적으로 처리하는 자료구조가 내장되어 있어 알고리즘 구현이 필요 없음

 

3. 여러 타입의 데이터가 저장 가능하다.

- 객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우

Wrapper 클래스 사용

 

 

 

 

❤ 컬렉션 (Collection)

자바 프로그래밍 언어에서 데이터를 저장, 관리 및 처리하기 위한 데이터 구조 및 클래스들의 모음이다.

컬렉션은 자료구조를 다루기 쉽게 만들어주는 라이브러리이며, 

다양한 종류의 데이터를 저장하고 조작하는 데 사용된다.

주요 목적은 데이터 그룹을 유지, 검색, 정렬, 추가, 삭제 및 수정하는 것이다.

 

자바 컬렉션 프레임워크에는 다양한 유형의 컬렉션 클래스와 인터페이스가 포함되어 있으며, 

이러한 클래스와 인터페이스를 사용하여 데이터를 다룰 수 있다.

가장 일반적인 자바 컬렉션 인터페이스로는 다음과 같은 것들이 있다.

 

 

-- 자바에서 컬렉션 프레임워크를 구성하고 있는 인터페이스 간의 상속 관계는 다음 그림과 같다.

-- 위의 그림에서 <E>나 <K, V>라는 것은 컬렉션 프레임워크를 구성하는 모든 클래스가 제네릭으로 표현되어 있음을 알려준다.

 

 

 

 

1. List: 순서가 있는 데이터를 저장하며, 중복을 허용한다.

예를 들어, ArrayList, LinkedList, Vector 등이 있다.

 

2.  Set: 순서가 없고 중복을 허용하지 않는 데이터를 저장한다. 

예를 들어, HashSet, TreeSet 등이 있다.

 

3. Map: 키-값(key-value) 쌍을 저장하는 데이터 구조로, 특정 키를 사용하여 값을 검색한다.

예를 들어, HashMap, TreeMap, LinkedHashMap 등이 있다.

 

컬렉션 프레임워크를 사용하면 데이터를 보다 쉽게 다룰 수 있으며,

데이터 구조에 따라서도 효율적으로 연산을 수행할 수 있다.

 

 

 

 

 

 

 

🧡 List interface

• ArrayList: 상대적으로 빠르고 요소에 대해 순차적으로 접근할 수 있다.

- list의 후손으로 초기 저장 용량은 10으로 자동 설정되며 따로 지정도 가능

- 저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능

- 동기화(Synchronized)를 제공하지 않음

 

  Vector: ArrayList의 이전 버전이며 모든 메서드가 동기화 되어 있다.

- ArrayList와 동등하지만 동기화를 제공한다는 점이 ArrayList와 차이점

-> List 객체들 중에서 가장 성능이 좋지 않음

 

  LinkedList: 순서가 변경되는 경우 노드 링크만 변경하면 되므로 삽입, 삭제가 빈번할 때 사용한다.

- List의 후손으로, 인접 참조를 링크해 체인처럼 관리

- 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞/뒤 링크만 변경하면 되기 때문에

객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음

 

 

     💕 List 계열 주요 메서드

 

 

 

 

 

 

 

 

🧡 Set Interface

  HashSet: 빠른 접근 속도를 가지고 있으나 순서를 예측할 수 없다.

  LinkedHashSet: 요소가 추가된 순서대로 접근할 수 있다.

  TreeSet: 요소들의 정렬 방법을 직접 지정할 수 있다.

 

 

 

 

 

 

 

 

 

🧡 Map Interface

  HashMap: 중복을 허용하지 않고 순서를 보장하지 않으며 null 값을 허용한다.

  Hashtable: HashMap보다는 느리지만 동기화를 지원하며 null 값을 허용하지 않는다.

  TreeMap: 정렬된 순서대로 Key와 Value를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬로 인해 오래걸린다.

  LinkedHashMap: HashMap과 기본적으로 동일하지만 입력한 순서대로 접근이 가능하다.

 

'JAVA' 카테고리의 다른 글

session 객체? + 쿠키  (0) 2023.11.28
application 객체?  (0) 2023.11.28
클래스(Class)와 객체(Object)  (0) 2023.08.17
객체지향언어란?  (0) 2023.08.17
메서드(Method)란?  (0) 2023.08.17