본문 바로가기

Backend Study/Java

[Java] Collection이란?

 

1. Collection이란?

자바 collection은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, 이들을 묶어 그룹화한 객체이다.

= 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것이다. 

자바 버전 8부터 도입되었고, ArrayList, LinkedList, HashMap 등이 여기 포함된다. 

 

collection 상속도

 

2. Collection의 종류 

컬렉션의 종류는 ArrayList, LinkedList, Vector, Stack, HashSet, TreeSet, HashMap, TreeMap 등이 있으며, 아래와 같은 자료구조 유형에 따라 구분된다. 

 

자바 컬렉션 프레임워크는 몇 가지 인터페이스를 통해 다양한 컬렉션을 이용할 수 있도록 하는데, 크게 3가지 타입으로 나누어 핵심이 되는 주요 인터페이스를 정의한다. 

 

List 인터페이스: 이름과 같이 목록처럼 데이터를 순서에 따라 관리한다. 데이터의 중복을 허용한다. 

Set 인터페이스: 중복이 허용되지 않는 데이터를 관리한다. 순서가 유지되지 않는다. 

Map 인터페이스: 데이터를 key와 Value로 짝을 이루어 관리한다. 순서가 유지되지 않고, key는 중복이 허용되지 않는다. 

 

List, set 인터페이스는 Collection 인터페이스를 상속받지만 Map 인터페이스는 구조상 차이로 인해 별도로 정의된다. 

 

 

3. Collection 인터페이스 그룹

Collection 인터페이스는 직접적인 구현은 제공하지 않으며 모든 컬렉션 클래스가 구현해야하는 메서드들을 포함한다. 

 

[대표적인 메서드들]

boolean add(E e): 해당 컬렉션에 전달된 요소 추가

boolean remove(Object o): 해당 컬렉션에서 전달된 객체 제거

void clear(): 해당 컬렉션의 모든 요소를 제거

boolean contains(Object o): 해당 컬렉션이 전달된 객체를 포함하고 있는지

boolean equals(Object o): 해당 컬렉션과 전달된 객체가 같은지

boolean isEmpty(): 해당 컬렉션이 비어있는지

Iterator <E> iterator(): 해당 컬렉션의 반복자(iterator)를 반환

int size(): 해당 컬렉션의 요소의 총개수를 반환

Object [] toArray(): 해당 컬렉션의 모든 요소를 Object 타입의 배열로 반환 

 

[대표적인 인터페이스들]

List 인터페이스 - ArrayList, LinkedList

Set 인터페이스 - HashSet, TreeSet, LinkedHashSet

SortedSet 인터페이스 - TreeSet

Queue 인터페이스 - PriorityQueue

Deque 인터페이스 - ArrayDeque

 

 

4. Map 인터페이스 그룹

Map 인터페이스는 키와 값을 매핑한다. 중복 키가 존재할 수 없으며 각 키는 하나의 값만 매핑할 수 있다. 

HashMap, TreeMap, LinkedHashMap 등이 있다.

 

 

5. 기타 인터페이스 그룹

iterator 인터페이스

어떤 컬렉션이든 반복적으로 수행하기 위한 메서드를 제공한다. 컬렉션 프레임워크에서는 Enumeration 대신 Iterator를 사용하며, 컬렉션 클래스의 Iterator는 Iterator 디자인 패턴을 구현한다. 

iterator 메서드를 통해 컬렉션으로부터 iterator instance를 가져올 수 있다. 

 

ListIterator 인터페이스 

어느 방향이든 목록을 탐색하고 반복하면서 목록을 수정하고, 목록에서 반복자의 현재 위치를 가져올 수 있다. ListIterator에는 현재의 요소가 없다. 커서 위치는 항상 previous()에 대한 호출에 의해 반환될 요소와 next()에 대한 호출에 의해 반환될 요소 사이에 위치한다. 

 

 

6. Collection 예제 

ArrayList

import java.util.ArrayList;
// 자바 프로그램 내에서 사용하는 클래스들의 경로명을 찾을 때, java.util 패키지에서도 확인할 것을 컴파일러에게 지시

public class Ex {
	public static void main(String[] args){
    
    	ArrayList<String> test = new ArrayList<String>();
        test.add("1");
        test.add("2");
        for (int i=0; i<test.size(); i++){
        	System.out.println(test.get(i));
        }
    
    }
}

 

HashMap

import java.util.HashMap;
import java.util.Scanner;
public class HashMap {
	public static void main(String [] args) {
    	HashMap<String, String> dic = new HashMap<>();
        dic.put("juice", "주스");
        dic.put("love", "사랑");
        dic.put("apple", "사과");
        
        String kor = dic.get('apple');
        print(kor)
        //사과 출력 
        
    }
}

 

참고) https://gbsb.tistory.com/247