1. 컬렉션 프레임워크란?

  • 다수의 데이터를 다루기 위한 자료구조를 표현하고 사용하는 클래스의 집합을 의미합니다!
  • 컬렉션 프레임워크의 모든 클래스는 Collection interface를 구현(implement)하는 클래스 또는 인터페이스 입니다.

 

2.  컬렉션 인터페이스와 자료구조

  • Collection 은 모든 자료구조가 구현(implement)하는 인터페이스입니다. 아래 배우는 모든 자료구조에 해당하는 클래스, 인터페이스는 언제나 Collection 인터페이스를 구현하고 있습니다.
    1. List : 순서가 있는 데이터의 집합이며 데이터의 중복을 허용합니다. → ArrayList, LinkedList, Stack 등
    2. Set : 순서를 유지하지 않는 데이터의 집합이며 데이터의 중복을 허용하지 않습니다. → HashSet, TreeSet 등
    3. Map : 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합입니다. 순서는 유지되지 않으며 키는 중복을 허용되지 않고 값은 중복을 허용합니다. → HashMap, TreeMap 등
    4. Stack : 마지막에 넣은 데이터를 먼저 꺼내는 자료구조입니다. LIFO(Last In First Out) → Stack, ArrayDeque 등
    5. Queue : 먼저 넣은 데이터를 먼저 꺼내는 자료구조입니다. FIFO(First In First Out) → Queue, ArrayDeque 등
    • 컬렉션 인터페이스에는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 등 데이터를 다루는데 기본적인 메소드들을 정의하고 있습니다. 이러한 메소드들을 실제로 구현을 해보면 빠르게 익힐 수 있습니다.

 

3. List

순서가 있는 나열된 데이터를 표현합니다.

  • ArrayList는 배열을 이용하여 데이터를 저장하는 List 인터페이스입니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        integerList.add(5);
        integerList.add(4);
        integerList.add(11);
        integerList.add(10);

        System.out.println(integerList); // [1, 5, 4, 11, 10]

        Collections.sort(integerList);  // default sort : 오름차순
        
        System.out.println(integerList); // [1, 4, 5, 10, 11]
        System.out.println(integerList.size()); // 5
        
        integerList.remove(4); // 4번자리 지워라
        System.out.println(integerList); // [1, 4, 5, 10]

        for (int a: integerList) { // 향상된 for문 (foreach)
            System.out.println(a); // for 문과 출력 값 같음
        }
    }
}

 

4. Set

순서를 유지하지 않는 데이터의 집합이며 데이터의 중복을 허용하지 않습니다.

  • HashSet은 Set 인터페이스를 구현한 대표적인 컬렉션입니다

add(), remove(), contains(), size(), clear() 

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set<Integer> integerSet = new HashSet<>(); // Collection의 자료형에는 primitive 타입은 올 수 없습니다. primitive 타입에 해당하는 class 가 존재하니 그것을 사용하세요.
        integerSet.add(1);
        integerSet.add(3);
        integerSet.add(2);
        integerSet.add(9);// 하나씩 값을 삽입합니다.
        System.out.println(integerSet); // 출력을 해보면 순서가 지켜지지 않는 것을 알 수 있습니다.

        Set<String> stringSet = new HashSet<>();
        stringSet.add("LA");
        stringSet.add("New York");
        stringSet.add("LasVegas");
        stringSet.add("San Francisco");
        stringSet.add("Seoul");
        System.out.println(stringSet);

        stringSet.remove("Seoul"); //Seoul을 HashSet에서 제거해보겠습니다. //순서가 없으므로 지정하여 삭제
        System.out.println(stringSet);

        ArrayList<String> target = new ArrayList<String>();
        target.add("New York");
        target.add("LasVegas");//제거할 항목을 ArrayList에 삽입하겠습니다.
        stringSet.removeAll(target);//제거항목에 삽입된 도시들을 삭제하겠습니다.
        System.out.println(stringSet);  // target에 포함된 도시들이 삭제됨

        System.out.println("LA가 포함되어있나요? " + stringSet.contains("LA")); //true
        System.out.println("LasVegas 포함되어있나요? " + stringSet.contains("LasVegas")); /false
        //LA가 HashSet에 포함되어있으면 true를, 그렇지 않으면 false를 반환합니다.

        System.out.println("현재 HashSet의 크기는 : " + stringSet.size() + "입니다.");
        //HashSet의 크기를 반환합니다.

        stringSet.clear();//HashSet의 모든 아이템들을 삭제합니다.
        System.out.println(stringSet);
    }
}

 

 

5. Map

  • HashMap은 키(key)와 값(value)을 하나의 데이터로 저장하는 특징을 가집니다.  이를 통하여 해싱(hashing)을 가능하게 하여 데이터를 검색하는데 뛰어난 성능을 보입니다.

put(), get(key), remove(key), clear()

public class Main {
    public static void main(String[] args) {
				Map<Integer, String> map = new HashMap<>();
        map.put(1, "apple");
        map.put(2, "berry");
        map.put(3, "cherry");

        System.out.println(map); {1=apple, 2=berry, 3=cherry}

        System.out.println("1st in map: " + map.get(1)); //apple

        map.remove(2); // key를 지정하여 삭제
        System.out.println(map);
        System.out.println(map.containsKey(2)); // 2라는 키가 있는지
        System.out.println(map.containsValue("cherry"));  //cherry 라는 value가 있는지
        
        map.clear();
        System.out.println(map);
    }
}

'프로그래밍 > Java' 카테고리의 다른 글

제네릭스(Generics) 란?  (0) 2022.05.18
Collection(2) - 스택(Stack)/ 큐(Queue)/ ArrayDeque  (0) 2022.05.18
날짜, 시간  (0) 2022.05.18
예외, 에러 처리  (0) 2022.05.18
객체지향언어 (4) 추상클레스, 인터페이스  (0) 2022.05.18

+ Recent posts