(2) List - List컬렉션, ArrayList, Vector, LinkedList 사용법
(4) Map - Map 컬렉션, HashMap, Hashtable 사용법
(5) 검색기능을 강화시킨 컬렉션 - TreeSet, TreeMap 사용법
1.Set
List 컬렉션은 저장 순서를 유지하지만, Set 컬렉션은 저장 순서가 유지되지 않습니다.
객체를 중복해서 저장할 수 없습니다.
Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet 등이 있는데,
다음은 Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드들입니다.
인덱스로 관리하지 않기 때문에 인덱스를 파라미터로 갖는 메소드가 없습니다.
add() | addAll() | clear() | contains() |
containsAll() | equals() | hashCode() | isEmpty() |
iterator() | remove() | removeAll() | retainAll() |
size() | toArray() | ||
- 사용법 -
Set<String> set = new Set<String>();
set.add("Andy");
set.add("Kush");
set.remove("Andy");
Set 컬렉션은 인덱스로 객체를 검색해서 가져오는 메소드가 없습니다.
대신, 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공합니다.
반복자는 Iterator 인터페이스를 구현한 객체를 말하는데, iterator() 메소드를 호출하면 얻을 수 있습니다.
- 사용법 -
Set<String> set = new Set<String>();
Iterator<String> iterator = set.iterator();
2. HashSet
HashSet은 Set 인터페이스의 구현 클래스입니다.
HashSet을 생성하기 위해서는 다음과 같이 기본 생성자를 호출하면 됩니다.
- 사용법 -
Set<E> set = new HashSet<E>();
타입 파라미터 E에는 컬렉션에 저장할 객체 타입을 지정하면 됩니다.
- HashSet은 객체들을 순서 없이 저장하고
- 동일한 객체는 중복 저장하지 않습니다.
- HashSet은 객체를 저장하기 전에 먼저 객체의 hashCode() 메소드를 호출해서 해시코드를 얻어냅니다.
- 그리고 이미 저장된 객체들의 해시코드와 비교합니다.
- 만약 동일한 해시코드가 있다면 다시 equals() 메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고 중복 저장을 하지 않습니다.
- 참고 -
문자열을 HashSet에 저장할 경우, 같은 문자열을 갖는 String 객체는 동등한 객체로 간주되고 다른 문자열을 갖는 String 객체는 다른 객체로 간주되는데, 그 이유는 String 클래스가 hashCode()와 equals() 메소드를 재정의해서 같은 문자열일 경우 hashCode()의 리턴 값을 같게, equals()의 리턴값은 true가 나오도록 했기 때문입니다.
- 사용 예 - (HashSet에 String 객체를 추가, 검색, 제거하는 방법을 보여줍니다.)