컬렉션즈 프레임워크라는 것은 다른 말로는 컨테이너이다. 값을 담는 그릇이라는 의미인데, 그 값의 성격에 따라 컨테이너의 성격이 달라진다. 자바에서는 다양한 상황에서 사용할 수 있는 다양한 컨테이너를 제공하는데 이것을 컬렉션즈 프레임워크라고 한다.
import java.util.ArrayList;
public class Collection {
//배열이 가지고 있는 한계를 쉽게 벗어날 수 있게 하는 도구
public static void main(String[] args) {
//1. 배열
String[] arrayObj= new String[2];
arrayObj[0] = "one";
arrayObj[1] = "two";
//arrayObj[2] = "three"; // 오류가 발생한다.
for (String string : arrayObj) {
System.out.println(string);
}
//2. ArrayList : 배열의 인덱스 개수를 설정할 필요가 없음.
ArrayList<String> al = new ArrayList<String>();// ArrayList에 있는 메소드들은 어떠한 형태의 데이터 타입도 수용할 수 있는 형태의 메소드이다.
al.add("one"); // object 타입임.
al.add("two");
al.add("three");
for (int i = 0; i < al.size(); i++) {
String value = al.get(i);
System.out.println(value);
}
}
}
List는 중복을 허용한다. 순서대로 나오는 것이 보장된다.
Set는 중복을 허용하지 않는다. 따라서 집합의 관계이다. 순서대로 나오는 것이 보장되지 않는다. 집합 A에서 안에 들어있는 것이 순서가 중요하지 않다.
각각의 값들은 고유하다. 따라서 중복되지 않는다.
// Hashset의 예
package collection;
import java.util.HashSet;
public class SetDemo {
public static void main(String[] args) {
HashSet<Integer> A = new HashSet<Integer>();
A.add(1);
A.add(2);
A.add(3);
HashSet<Integer> B = new HashSet<Integer>();
A.add(3);
A.add(4);
A.add(5);
HashSet<Integer> C = new HashSet<Integer>();
A.add(1);
A.add(2);
System.out.println(A.containsAll(B)); //false
System.out.println(A.containsAll(C)); //true
//A.addAll(B); 합집합
//A.retainAll(B); 교집합
//A.removeAll(B); 차집합
}
}