Back-End/JAVA

[Java] HashSet

챌링킴 2021. 6. 1. 19:35
반응형

1) HashSet

Set은 집합이다.

 

저장된 값들은 인덱스가 없기 때문에 저장 순서가 고정되어 있지 않다.

값의 포함 여부, 유무 검사 목적이 있다.

 

집합은 중복되는 원소(요소, 값)를 포함할 수 없다.

중복을 없앨 때 사용하기도 한다.

 

2) HashSet에서 요소 가져오기 - iterator

.iterator( )

- 순서가 없는 Set 타입의 요소에 순서를 부여해주는 기능을 담당한다.

- 리턴 타입은 Iterator<>

- 순서가 부여되었으면 값들을 .next( )를 통해 하나씩 가져올 수 있다.

 

3) HashSet 메소드

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

public class HSetTest {
	public static void main(String[] args) {
		HashSet<String> set1 = new HashSet<>();

		// HashSet에 요소 추가하기
		set1.add("Hello");
		set1.add("Java");
		set1.add("Collection");
		set1.add("Web");

		// HashSet의 구조파악하기
		System.out.println(set1); // 순서가 무작위

		// HashSet의 요소의 크기,개수
		System.out.println(set1.size());

		// HashSet에 요소 포함여부 확인하기
		System.out.println(set1.contains("Web"));

		// HashSet에서 요소 삭제하기
		set1.remove("Web");
		System.out.println(set1);

		// HashSet에서 요소 가져오기
		// 1. .iterator()를 통해 순서부여하기
		Iterator<String> iter = set1.iterator();
		// 2. 순서가 부여된 Iterator 객체에서 .next()로 요소 꺼내오기
		while (iter.hasNext()) { //hasNext : 다음 요소가 있으면 true
			System.out.println(iter.next()); //다음요소로 이동하면서 return
		}

	}
}

Set은 검색의 목적이 있기 때문에 순서 정보를 관리할 필요가 없다.

따라서 데이터 크기에 상관없이 검색에 걸리는 시간이 매우 짧다.

반면, ArrayList는 인덱스를 관리해야 하기 때문에 상대적으로 시간이 오래 걸린다.

 

기능적으로 HashSet과 ArrayList로 구현한 것이 차이가 없다면 HashSet을 이용하는 것이 좋다.

반응형

'Back-End > JAVA' 카테고리의 다른 글

[Java] 빠른 for문  (0) 2021.06.01
[Java] HashMap  (0) 2021.06.01
[Java] ArrayList  (0) 2021.06.01
[Java] 컬렉션 프레임워크(Collection Framework)  (0) 2021.05.31
[Java] Generic(제네릭)  (0) 2021.05.31