영호

[Java] Java 컬렉션 프레임워크(Collection Framework) 본문

Language/JAVA

[Java] Java 컬렉션 프레임워크(Collection Framework)

0h0 2022. 5. 31. 14:39

컬렉션 프레임워크(collection framework)란

여러 데이터를 쉽게 다룰 수 있도록 Java에서 제공해주는 클래스들의 인터페이스입니다.

즉, collection framework를 사용해 stack, queue, set 등 다양한 자료구조를 쉽게 사용할 수 있습니다.

 

 

컬렉션 프레임워크(collection framework) 상속 구조

Java collection
Java collection

  • 위 사진에서 보면 List, Set은 Collection을 상속받지만 Map은 그렇지 않습니다.
  • List와 Set은 공통된 메소드를 사용하지만 Map은 구조상 달라서 따로 나와있습니다.

사진출처 : https://gangnam-americano.tistory.com/41

Collection interface 메소드

java collection interface
collection interface

add

  • add()를 통해 객체를 추가할 수 있습니다.

addAll

  • addAll()에 인자로 컬렉션을 인자로 넘어온 컬렉션을 뒤에 붙여줍니다.
  • 합집합 연산과 비슷합니다.
package collection;

import java.util.ArrayList;

public class AddAllTest {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList<String>();
        test.add("java");
        test.add("collection");

        ArrayList<String> addAllTest = new ArrayList<String>();
        addAllTest.add("hello");
        System.out.println("addAllTest = " + addAllTest);
        addAllTest.addAll(test);
        System.out.println("addAllTest = " + addAllTest);
        
    }
}
addAllTest = [hello]
addAllTest = [hello, java, collection]

clear

  • 컬렉션의 모든 객체를 삭제합니다.

contains

  • 컬렉션에 특정 객체가 포함되어 있는지 확인합니다.

containsAll

  • 인자로 넘어온 컬렉션의 객체들이 모두 포함되어 있어야 true를 반환합니다.
package collection;

import java.util.ArrayList;

public class AddAllTest {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList<String>();
        test.add("java");
        test.add("collection");

        ArrayList<String> containAllTest = new ArrayList<String>();
        containAllTest.add("java");

                System.out.println("test = " + test);
        System.out.println("containAllTest = " + containAllTest);
        System.out.println("containAlltest가 test의 모든 원소를 포함하나요? : " + containAllTest.containsAll(test));

    }
}
test = [java, collection]
containAllTest = [java]
containAlltest가 test의 모든 원소를 포함하나요? : false

equals

  • 두 개의 컬렉션 내부 객체들이 전부 동일한지 비교

iterator

  • 컬렉션의 iterator 객체 반환

remove

  • 컬렉션의 특정 객체 삭제

removeAll

  • 지정된 컬렉션에서 인자로 넘어온 컬렉션의 객체들을 빼줍니다.
  • 차집합 연산과 비슷합니다.
package collection;

import java.util.ArrayList;

public class AddAllTest {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList<String>();
        test.add("hello");
        test.add("java");
        test.add("collection");

        ArrayList<String> removeAllTest = new ArrayList<String>();
        removeAllTest.add("java");
        removeAllTest.add("hello");

        System.out.println("test.removeAll(removeAllTest) = " + test.removeAll(removeAllTest));
        System.out.println("test = " + test);

    }
}
test.removeAll(removeAllTest) = true
test = [collection]

retainAll

  • 지정된 컬렉션의 객체들을 인자로 넘어온 컬렉션의 객체와 같은 객체들만 남기고 나머지는 전부 삭제합니다.
  • 지정된 컬렉션에 변화가 있다면 true를 반환합니다.
package collection;

import java.util.ArrayList;

public class AddAllTest {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList<String>();
        test.add("hello");
        test.add("java");
        test.add("collection");

        ArrayList<String> retainAllTest = new ArrayList<String>();
        retainAllTest.add("java");

        System.out.println("test.retainAll(retainAllTest) = " + test.retainAll(retainAllTest));
        System.out.println("test = " + test);

    }
}
test.retainAll(retainAllTest) = true
test = [java]

size

  • 컬렉션의 객체가 몇 개 있는지 반환합니다.

사진출처 : https://ece.uwaterloo.ca/~dwharder/aads/Online/Java/

주요 인터페이스 특징

List

  • 순서를 유지하고, 중복 데이터가 허용됩니다.
  • Collection인터페이스를 상속받는다.
  • 구현 클래스
    • Vector, ArrayList, LinkedList, Stack, Queue

Set

  • 순서가 유지되지 않고, 중복 데이터 역시 허용되지 않습니다.
  • Collection인터페이스를 상속받는다.
  • 구현 클래스
    • HashSet, TreeSet

Map

  • 순서가 유지되지 않습니다.
  • Key의 중복은 허용하지 않지만, Value의 중복은 허용됩니다.
  • 구현 클래스
    • HashMap, TreeMap, Hashtable, Properties

 

마무리

  • Collection을 이용해 다양한 자료구조를 쉽게 사용할 수 있기 때문에, 사용법을 숙지하고 있으면 유용할 거 같습니다.
  • Java에는 Collection라는 것이 있는데 Collection과는 다른 것이기 때문에 추후 알아볼 예정입니다.
  • 또한, List, Set, Map에 대해서도 더 자세히 알아보겠습니다.

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

[Java] List인터페이스 - LinkedList  (0) 2022.06.16
[Java] List인터페이스 - ArrayList  (0) 2022.06.14
[Java] String Constant Pool  (0) 2022.06.08
[Java] ==, equals() 차이  (0) 2022.06.08
[Java] JVM메모리 구조  (0) 2022.05.11
Comments