[Java] Java collection framework

심지혜·2023년 3월 28일

Java Collection Framework란?

자바 컬렉션 프레임워크(Java Collection Framework)는 자바에서 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이다.

메모리 구조

리스트를 선언하면, stack에 LList를 저장할 공간이 힙 영역에 있는지 확인 후 List를 참조하는 list를 스택 영역에 할당한다. 리스트에 요소들이 add 될 때마다 인덱스에서 또다른 데이터에 대한 참조 값을 가진다.

자바 컬렉션 프레임워크의 구성

컬렉션 인터페이스

컬렉션 클래스가 구현해야 하는 메서드들을 정의한다.

  • List 인터페이스: 순서가 있는 컬렉션이며 중복 요소를 허용한다. 인덱스로 요소에 접근할 수 있다.
  • Set 인터페이스: 순서가 없는 컬렉션이며 중복 요소를 허용하지 않는다. iterator 또는 foreach를 이용하여 요소를 탐색할 수 있다.
  • Queue 인터페이스: FIFO(First In First Out, 선입선출) 구조의 컬렉션이다. 입력 순서에 따라 요소를 꺼낼 수 있다.
  • Map 인터페이스: Key-Value 쌍으로 이루어진 컬렉션이다. Key는 중복을 허용하지 않고 Value는 중복을 허용합니다. Key를 이용하여 Value에 접근할 수 있다.

컬렉션 클래스

컬렉션 인터페이스를 구현한 실제 클래스들이다.

  • ArrayList 클래스: List 인터페이스를 구현한 가장 기본적인 컬렉션 클래스이다. 내부적으로 동적 배열(Dynamic Array)을 사용하여 요소를 저장하며, 임의의 위치에 접근하는데 빠르다. 하지만 삽입과 삭제가 느리다.
// ArrayList
 
package ch15;

import java.util.ArrayList;

public class ArrayListExam{
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("사과");
        list.add("바나나");
        list.add("체리");
        System.out.println(list); // [사과, 바나나, 체리]
    }
}
  • LinkedList 클래스: List 인터페이스를 구현한 또 다른 컬렉션 클래스이다. 내부적으로 연결 리스트(Linked List)를 사용하여 요소를 저장하며, 삽입과 삭제가 빠르다. 하지만 임의의 위치에 접근하는데 느리다.
  • HashSet 클래스: Set 인터페이스를 구현한 컬렉션 클래스이다. 내부적으로 해시 테이블(Hash Table)을 사용하여 요소를 저장하며, 중복 요소를 허용하지 않고 순서가 없다. 추가와 검색이 빠르지만 정렬이 필요하면 TreeSet을 사용해야 한다.
  • TreeSet 클래스: Set 인터페이스를 구현한 또 다른 컬렉션 클래스입니다. 내부적으로 레드-블랙 트리
// Hashmap

package ch15;

import java.util.HashMap;

public class exam {
    public static void main(String[] args) {
            HashMap<String, Integer> map = new HashMap<String, Integer>();
            map.put("사과", 3);
            map.put("바나나", 2);
            map.put("체리", 5);
            System.out.println(map); // {체리=5, 사과=3, 바나나=2}
    }
}

컬렉션 알고리즘

컬렉션에 대해 수행할 수 있는 정렬, 검색, 셔플 등의 기능 제공하는 알고리즘이다.

0개의 댓글