set은 linkedList와 달리 데이터의 중복을 허용하지않는다.
인덱스로 객체를 관리하지 않으므로 데이터를 검색할때는 iterator() 메서드로 iterator(반복자)를 생성하고 데이터를 가져와야한다.
대표적인 set 컬렉션 구현 클래스.
중복 데이터 저장 X
순서 보장 X
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("안");
set.add("녕");
set.add("하");
set.add("세");
set.add("요");
set.add("99");
set.add("2");
set.add("-1");
//한번더 넣으면? 중복을 허용하지않으므로 들어가지않는다!
set.add("안");
set.add("녕");
set.add("하");
set.add("세");
set.add("요");
set.add("99");
set.add("2");
set.add("-1");
Iterator<String> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
}
->중복을 허용하지않고 순서도 뒤죽박죽이다.
Hashset과 같이 중복데이터 저장 X
순서 보장 X
단, 오름차순으로 데이터를 정렬한다.
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>();
set.add("안");
set.add("녕");
set.add("하");
set.add("세");
set.add("요");
set.add("3");
set.add("2");
set.add("1");
Iterator<String> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
}
->숫자와 글자가 오름차순으로 저장됨.
중복데이터 저장 X
단, 입력된 순서대로 데이터를 관리한다.
public static void main(String[] args) {
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("안");
set.add("녕");
set.add("하");
set.add("세");
set.add("요");
set.add("3");
set.add("2");
set.add("1");
Iterator<String> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
}
->데이터가 들어온 순서대로 저장되었다.