JAVA

Java Collection Framework

icedstone 2025. 7. 12. 17:05
반응형
A collection is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve, manipulate, and communicate aggregate data.
— Collections Framework Overview, Java SE 8

Oracle JDK에서는 Collection에 대해서 데이터를 저장하고 조작하는 표준화된 방식을 제공하고 있다고 설명하고 있다. 

 

Collection Framework를 제공함으로써 다음과 같은 이점을 가질 수 있다고 한다.

1. 프로그래밍 작업을 줄일 수 있다.

2. 성능을 향상시킨다.

3. 관련 없는 API간 상호운용성을 제공한다.

4. API 학습 비용을 줄인다.

5. 더 쉽게 API를 설계, 구현할 수 있게 도와준다.

6. 재사용성을 늘린다.

 

Collection Framework 에서 제공하는 Interface는

 

실제로 그런지 살펴보자

1. 프로그래밍 작업을 줄일 수 있다. - 배열내에서 사용할 만한 기능들을 이미 구현해두었기에 별도로 구현하지 않아도 된다.

 

String[] names = new String[10];
int size = 0;

void add(String name) {
    names[size++] = name;
}
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");

 

2. 성능을 향상시킨다.

- 상황에 따라서 적절한 구현체를 사용함으로써 성능향상이 가능하다.

   ex: 중간의 원소를 수정할 일이 많은 경우 - LinkedList사용, 임의의 위치에 원소를 찾아야하는 경우가 많은 경우 - ArrayList사용 

  * 각 구현체에 따라 제공하는 성능이 달라 알맞게 사용하여 성능 향상이 가능하다.

 

3. 관련 없는 API간 상호운용성을 제공한다.

Set<String> keywordSet = new HashSet<>();
keywordSet.add("java");
keywordSet.add("collections");

List<String> keywords = new ArrayList<>(keywordSet); // 쉽게 변환 가능
someApi.acceptKeywords(keywords);

 

 

4. API 학습 비용을 줄인다.

- interface기반으로 구현되어있기에, 학습된 기능은 다른 구현체에서도 쉽게 익혀서 사용이 가능하다.

  ex: contains method의 경우 List, Set 어디에서든 원소의 존재 여부를 확인하는 method이다.

 

5. 더 쉽게 API를 설계, 구현할 수 있게 도와준다. - interface형태이기 때문에 구현체에 신경쓰지 않고 유연한 설계 가능

public void printUsers(List<User> users) {
    for (User user : users) {
        System.out.println(user.getName());
    }
}

 

6. 재사용성을 늘린다. - 이미 구현된 알고리즘이 많아 재사용하여 활용 가능하다.

List<Integer> scores = Arrays.asList(90, 70, 80, 100);
Collections.sort(scores);  // 재사용 가능한 정렬 알고리즘

int idx = Collections.binarySearch(scores, 80);  // 검색도 가능

 


Collections에서 제공하는 Interface

* Map은 Collection interface를 상속하지 않고 별도의 interface로 기능을 제공한다.

 

Map관련 자료: https://icedstone.tistory.com/14

List관련 자료: https://icedstone.tistory.com/15

 

반응형

'JAVA' 카테고리의 다른 글

Java Collection - Map  (3) 2025.08.08
Java IO vs NIO  (0) 2025.07.20
interface vs abstract class  (1) 2025.07.05
Blocking vs Non-Blocking, Synchronous vs Asynchronous  (0) 2025.04.21
JVM 메모리 구조  (0) 2025.04.19