Set / HashSet

HH_Nebula·2022년 9월 1일
0

Collection / Generic

목록 보기
4/7

Set

List 는 저장 순서가 기록되고 중복도 허용되는 반면, Set 은 저장 순서가 유지되지 않고, 중복 객체도 저장하지 못하게하는 자료구조이다. null 역시 중복을 허용하지 않으므로 1개의 null 만 저장된다.

구현 클래스로는 HashSet LinkedHashSet TreeSet 이 있다.

다형성을 활용해 참조변수 타입을 Set 으로 하여 인스턴스를 생성할 수 있다.

Set 주요 메서드

Set 주요 메서드

객체 추가 메서드기능
boolean add(element)주어진 객체를 리스트의 멘 뒤에 추가
boolean addAll(Collection)주어진 컬렉션 타입을 객체 리스트에 추가

객체 검색 메서드기능
boolean contains(Object)주어진 객체가 저장되어 있는지 검색
Iterator<E> iterator()저장된 객체를 한번씩 가져오는 반복자 리턴
boolean isEmpty()컬렉션이 비어있는지 검사
int size()저장되어 있는 객체의 수 반환
Object[] toArray()배열로 변환
Object[] toArray(Object[])지정한 배열의 클래스 타입 배열로 반환

객체 삭제 메서드기능
void clear()저장된 모든 객체를 삭제
boolean remove(Object)주어진 객체 삭제
boolean removeAll(Collection)저장된 모든 객체를 삭제

전체 객체 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공
인덱스로 객체에 접근할 수 없음

Iterator

자료구조 중 Set 의 경우 인덱스가 없기 때문에 반복자 iterator 를 통해 객체에 접근한다.

iterator의 기능
1. 컬렉션에서 요소를 제어하는 기능
2. next() 및 previous()를 써서 앞뒤로 이동하는 기능
3. hasNext()를 써서 더 많은 요소가 있는지 확인하는 기능

HashSet

Set 에 객체를 저장할 때 hash 함수를 사용하여 처리속도가 빠르다. 동일 객체 뿐 아니라 동등 객체도 중복하여 저장하지 않는다.

HashSet 예제

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;

public class TestHashSet {

	public static void main(String[] args) {

		Set<String> hashSet = new HashSet<String>();

		hashSet.add("Apple");
		hashSet.add("Banana");
		hashSet.add("Mango");
		hashSet.add("Melon");
		hashSet.add("Orange");
		hashSet.add("Banana");
		hashSet.add("Mango");

		// 저장 순서가 유지되지 않고 중복을 허용하지 않는다.
		System.out.println(hashSet); // [Apple, Mango, Orange, Banana, Melon]

		Iterator<String> iter = hashSet.iterator();
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // true
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // false

	}

}
profile
공부하고 기록하고 복습하고

0개의 댓글