Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

노승현

컬렉션 프레임워크 본문

JAVA/Mentor JAVA

컬렉션 프레임워크

nsh95 2024. 1. 22. 18:03

Java에서는 컬렉션 프레임워크(Collection Framework)를 제공하여 데이터를 저장하고 처리하는 다양한 자료 구조 및 알고리즘을 지원합니다. 컬렉션 프레임워크는 표준 인터페이스와 구현 클래스로 구성되어 있으며, 제네릭(Generics)을 활용하여 타입 안정성을 제공합니다.

1. 컬렉션 프레임워크의 주요 인터페이스:

  • Collection 인터페이스:
    • List, Set, Queue 인터페이스의 상위 인터페이스로, 여러 요소를 담을 수 있는 컬렉션을 정의합니다.
    • 주요 메서드로는 add, remove, size 등이 있습니다.
  • List 인터페이스:
    • 순서가 있는 데이터의 집합을 나타내며, 중복된 요소를 허용합니다.
    • 구현 클래스로는 ArrayList, LinkedList, Vector 등이 있습니다.
  • Set 인터페이스:
    • 순서가 없는 데이터의 집합을 나타내며, 중복된 요소를 허용하지 않습니다.
    • 구현 클래스로는 HashSet, TreeSet 등이 있습니다.

2. 제네릭(Generics):

  • Generics(제네릭):
    • 자바 5부터 도입된 기능으로, 컬렉션에서 사용되는 데이터 타입을 컴파일 시에 명시할 수 있도록 합니다.
    • 타입 안전성을 제공하여 런타임 오류를 방지합니다.

3. List 컬렉션:

  • ArrayList:
    • 배열 기반으로 동적으로 크기가 확장되는 리스트를 구현한 클래스입니다.
    • 인덱스를 사용하여 요소에 접근할 수 있어 빠른 접근이 가능합니다.
  • LinkedList:
    • 이중 연결 리스트로 구현된 리스트입니다.
    • 요소의 추가 및 삭제가 빠르며, 순차적인 접근은 느립니다.
  • Vector:
    • 과거에는 주로 사용되었지만, 현재는 거의 사용되지 않는 클래스입니다.
    • 스레드 동기화가 보장되는 특징이 있습니다.

4. Set 컬렉션:

  • HashSet:
    • 해시 테이블을 사용하여 구현된 Set입니다.
    • 순서가 없고, 중복된 요소를 허용하지 않습니다.
  • TreeSet:
    • 이진 검색 트리를 사용하여 구현된 Set입니다.
    • 요소가 정렬된 순서로 저장되며, 중복된 요소를 허용하지 않습니다.
  • LinkedHashSet:
    • 해시 테이블과 연결 리스트를 사용하여 구현된 Set입니다.
    • 요소가 추가된 순서대로 저장되며, 중복된 요소를 허용하지 않습니다.

이외에도 Queue, Map 등 다양한 컬렉션과 관련된 클래스 및 인터페이스가 있습니다. 컬렉션 프레임워크는 다양한 자료 구조를 제공하므로, 프로그래밍 시에 필요에 따라 적절한 컬렉션을 선택하여 사용할 수 있습니다.

 

5. Iterator (반복자):

반복자(Iterator)는 컬렉션의 요소에 순차적으로 접근하고, 해당 요소를 수정 또는 삭제할 때 사용하는 인터페이스입니다. Iterator를 사용하면 컬렉션의 내부 구조에 상관없이 요소에 접근할 수 있습니다.

주요 메서드:

  • boolean hasNext():
    • 다음 요소가 있는지 확인하고, 있으면 true를 반환합니다.
  • E next():
    • 다음 요소를 반환합니다.
  • void remove():
    • 현재 요소를 삭제합니다.
List<String> myList = new ArrayList<>();
myList.add("Java");
myList.add("Python");
myList.add("C++");

Iterator<String> iterator = myList.iterator();
while (iterator.hasNext()) {
    String language = iterator.next();
    System.out.println(language);

    // 요소 삭제
    if (language.equals("Java")) {
        iterator.remove();
    }
}
System.out.println("삭제 후 리스트: " + myList);

 

 

6. Map 컬렉션:

Map은 키-값(key-value) 쌍으로 데이터를 저장하는 컬렉션입니다. Java에서는 Map 인터페이스를 정의하고, 이를 구현하는 다양한 클래스들이 제공됩니다.

주요 메서드:

  • V put(K key, V value):
    • 지정된 키와 값을 매핑하고, 이전에 동일한 키에 매핑된 값이 있다면 이전 값을 반환합니다.
  • V get(Object key):
    • 지정된 키에 매핑된 값을 반환합니다.
  • boolean containsKey(Object key):
    • 지정된 키가 맵에 존재하는지 확인합니다.
  • Set<K> keySet():
    • 맵의 모든 키를 포함하는 Set을 반환합니다.
  • Collection<V> values():
    • 맵의 모든 값들을 포함하는 Collection을 반환합니다.
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Alice", 25);
ageMap.put("Bob", 30);
ageMap.put("Charlie", 28);

// 값 가져오기
int aliceAge = ageMap.get("Alice");
System.out.println("Alice의 나이: " + aliceAge);

// 모든 키-값 쌍 출력
for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

 

 

Map은 주로 키를 기반으로 데이터를 관리하며, 중복된 키를 허용하지 않습니다. 만약 중복된 키를 허용하고자 한다면 MultiMap과 같은 자료 구조를 사용하거나, Java 8부터 도입된 Map.merge() 메서드를 활용할 수 있습니다.

'JAVA > Mentor JAVA' 카테고리의 다른 글

스레드  (1) 2024.01.25
람다식  (0) 2024.01.22
API 클래스  (0) 2024.01.19
예외처리  (0) 2024.01.19
내부 클래스  (0) 2024.01.09