영호
[Java] Java 컬렉션 프레임워크(Collection Framework) 본문
컬렉션 프레임워크(collection framework)란
여러 데이터를 쉽게 다룰 수 있도록 Java에서 제공해주는 클래스들의 인터페이스입니다.
즉, collection framework를 사용해 stack, queue, set 등 다양한 자료구조를 쉽게 사용할 수 있습니다.
컬렉션 프레임워크(collection framework) 상속 구조
- 위 사진에서 보면 List, Set은 Collection을 상속받지만 Map은 그렇지 않습니다.
- List와 Set은 공통된 메소드를 사용하지만 Map은 구조상 달라서 따로 나와있습니다.
사진출처 : https://gangnam-americano.tistory.com/41
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