백/Java

[Java] 자바(Java)의 컬렉션(Collection)이란?

연지양갱 2023. 10. 23. 23:23
728x90
반응형
SMALL

자바 문법을 공부하면서 collecion이라는 것을 배운 적이 있습니다.

하지만 기억이 가물가물하더라구요,,ㅎ

그래서 정리하겠습니다!

웬만해서는 뤼튼으로 먼저 개념을 간단하게 이해하고 제가 가지고 있는 교재 Java 정복하기로 개념을 살펴보겠습니다.

 

 

컬렉션(Collection)이란 "미술품이나 우표, 화폐 등을 수집하는 일 또는 수집"이라고 말합니다.

컴퓨터 과학 기초로 컬렉션은 데이터를 수집한 것이라고 생각하면 됩니다.

 

 

Collecion Framework란?

Collecion Framework는 데이터를 효과적으로 관리하고 조작할 수 있는 표준 클래스를 정의하는 인터페이스를 제공합니다.

즉 설계된 클래스와 인터페이스를 묶어놓은 데이터의 집합, 그룹을 의미합니다.

이러한 클래스들은 다양한 방식으로 데이터를 저장하고 처리하는 데 사용되며, 대표적으로 List, Set, Queue, Deque와 같은 인터페이스와 이들을 구현하는 ArrayList, LinkedList, HashSet, TreeSet 등의 클래스가 있습니다.

 

 

 

 

컬렉션(Collection)의 종류

List, Set, Queue / Deque, Map 4종류가 있습니다.

각 종류별로 나누어져 있는 것을 하나하나 구현해보고 정리하도록 하겠습니다.

출처 : https://hudi.blog/java-collection-framework-1/

 

1. List

순서가 있는 데이터 집합을 다루는 데 사용되며 중복된 원소를 허용합니다.

public class Main {
    public static void main(String[] args) {
        String[] list = new String[]{"가","나","다","라","마"};
        list[2] = null;
        list[4] = null;
        System.out.println("list = "+ list.length);
    }
}

 

ArrayList : 배열 기반의 List로서 원소의 추가/삭제에 비해 조회 연산이 빠릅니다.

import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 배열
        String[] array = new String[]{"가","나","다","라","마"};
        array[2] = null;
        array[4] = null;
        System.out.println("list = "+ array.length);

        //list
        List<String> aList = new ArrayList<>(); // ArrayList 생성
        aList.add("가"); // 가 추가
        aList.add("나");
        aList.add("다");
        aList.add("라");
        aList.add("마");
        System.out.println(aList.size()); // 데이터 개수
        aList.remove("라"); // 데이터 삭제
        aList.remove("가");
        System.out.println(aList.size());
        System.out.println(aList);

    }
}

 

LinkedList : 링크드 리스트 기반의 List로서 원소의 추가/삭제가 빠르지만 조회 연산이 느립니다.

import java.util.LinkedList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> linkedList = new LinkedList<>();
        linkedList.add(0,1); // 값 추가 => (인덱스, 값)
        linkedList.add(1,2);
        linkedList.add(2, 3);

        linkedList.remove(1); //  값 삭제

        for ( int i=0; i<linkedList.size(); i++){
            System.out.println("linkedlist = "+ linkedList.get(i)); // 출력
        }
    }
}

 

2. Set

HashSet : 해시 테이블을 사용하여 원소를 저장하므로 검색 및 삽입 속도가 일정합니다.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Set<String> hSet1 = new HashSet<>();
        // hashSet에 값 추가
        hSet1.add("가");
        hSet1.add("나");
        hSet1.add("다");
        hSet1.add("라");
        hSet1.add("마");

        // 값 삭제
        hSet1.remove("다");

        System.out.println("HashSet => "+ hSet1.toString());

        Iterator<String> iterator = hSet1.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next() + " ");
        }
    }
}

\

 

TreeSet : 이진 검색 트리 형태로 원소를 저장하여 정렬된 순서를 유지합니다.

import com.sun.source.tree.Tree;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        TreeSet<Integer> tSet1 = new TreeSet<>();
        // hashSet에 값 추가
        tSet1.add(1);
        tSet1.add(5);
        tSet1.add(8);
        tSet1.add(2);
        tSet1.add(6);

        System.out.println("TreeSet => "+ tSet1.toString());
        System.out.println(tSet1.first()); // 첫번째 값
        System.out.println(tSet1.last()); // 가장 마지막 값
        System.out.println(tSet1.lower(5)); // 5보다 작은 수 출력
        System.out.println(tSet1.higher(2)); // 2보다 큰수 출력

        for(int i=0; i<tSet1.size(); i++){
            System.out.print(tSet1.pollFirst() + " "); // 오름차순으로 출력하기
        }
        for(int i=0; i<tSet1.size(); i++){
            System.out.print(tSet1.pollLast() + " "); // 내림차순으로 출력하기
        }
    }
}

 

 

3.Queue / Deque (Double Ended Queue)

FIFO(First In First Out) 방식으로 요소들을 관리합니다.

Deque는 양쪽 끝에서 요소들을 추가/제거할 수 있습니다.

 

 

 

4. Map

Key-Value쌍으로 데이터를 저장하며 Key는 유일해야합니다.

HashMap : Key-Value 쌍을 해시 테이블에 저장하므로 검색 및 삽입속도가 일정합니다.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<Integer, String> hMap = new HashMap<>();
        hMap.put(2, "나다라"); // 값 추가
        hMap.put(1, "가나다");
        hMap.put(3, "다라마");
        System.out.println(hMap.toString());

        hMap.replace(1,"가가가"); // 수정
        hMap.remove(3); // 삭제

        System.out.println(hMap.get(1)); // 값 출력
        System.out.println(hMap.get(3));

    }
}

 

TreeMap : Key-Value 쌍을 이진 검색 트리에 저장하여 Key 값에 따라 정렬됩니다.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        TreeMap<Integer, String> tMap = new TreeMap<>();
        tMap.put(2, "나다라"); // 값 추가
        tMap.put(1, "가나다");
        tMap.put(3, "다라마");
        System.out.println(tMap.toString());

        System.out.println(tMap.firstKey()); // 첫번째 key 값
        System.out.println(tMap.firstEntry()); // 첫번째 value 값 
        System.out.println(tMap.lastKey()); // 마지막 key 값
        System.out.println(tMap.lastEntry()); // 마지막 value 값
    }
}

각 컬렉션 마다 가능한 함수들이 있습니다.

그에 관해서는 시간이 남는 다면,,,, 작성하겠습니다!

 

반응형