Set 컬렉션은 동일한 타입의 묶음이라는 특징은 동일하지만, 인덱스 정보를 포함하고 있지 않다.
즉 집합의 개념과 같은 컬렉션이다. 인덱스 정보가 없으므로 데이터를 중복해 저장하면 중복된 데이터를 꺼낼 방법이 없기 때문에 중복 저장을 허용하지 않는다.
다음 예시를 보자
이 두 객체는 동일한 데이터인가?
A a1 = new A(3); A a2 = new A(3);
맞는 말이기도, 틀린 말이기도 하다.
이 객체가 중복을 허용하는 List의 객체라면 다른 데이터지만, 중복을 허용하지 않는 Set의 객체라면 같은 객체이다. 왜냐하면 Set객체는 인덱스가 없기 때문에 값을 구별할 방법이 3 하나밖에 없기 때문이다.
HashSet<E>, LinkedHashSet<E>, TreeSet<E>
Set 컬렉션의 주요 메서드
boolean add(E element)
// 매개변수로 입력된 원소를 리스트에 추가
boolean addAll(Collection<? Extends E> c)
//매개변수로 입력된 컬렉션 전체를 추가
boolean remove(Object o)
//원소 중 매개변수입력과 동일한 객체 삭제
void clear()
//전체 원소 삭제
boolean idEmpty()
//Set 객체가 비워져 있는지 여부를 리턴
boolean contains(Object o)
//매개변수로 입력된 원소가 있는지 여부를 리턴
int size()
//리스트 객체 내에 포함된 원소의 개수
Iterator<E> iterrator()
Set 객체내의 데이터를 연속하여 꺼내는 iterator 객체 리턴
Object[] toArray()
//리스트를 Object 배열로 변환
T[] toArray(T[] t)
//입력매개변수로 전달한 타입의 배열로 변환