▸JAVA/라이브러리(API)

java.util.HashSet 주요 메소드 [1/1]

코데방 2019. 12. 11.
728x90

[ HashSet Class ]

  • 중복 없는 데이터 집합을 다룸
  • 컬렉션 프레임워크 중 데이터 처리 속도가 가장 빠름
  • HashMap Class와 유사한 작동 원리

컬렉션 프레임워크의 기본개념과, HashSet의 개념은 아래 링크글을 참조하시면 됩니다.

 

2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4]

2019/12/11 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_Set 계열 [3/4]

 


 

[ 생성자 ]

  • new HashSet<값 제네릭>();
  • 인자값으로 용량과 사용률을 줄 수 있음 (HashMap과 동일)
  • 용량 : 해시 테이블의 갯수를 의미 ( 카테고리의 갯수라고 보면 됨, 기본 16)
  • 사용률 : 해시 테이블이 얼마만큼 다 차면 늘려줄 것인지 퍼센트를 기입 (기본 0.75)
package study.first;

import java.util.HashSet;
import java.util.TreeSet;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();
		
		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);
		
		// [zip, banana, apple, candy, dog, enum]
		System.out.println(list);		
	}
}

 


 

[ add() ]

  • 값 추가, 정렬 없이 내부 로직에 맞는 위치에 저장됨
  • 중복값을 추가할 경우 변동 없음
package study.first;

import java.util.HashSet;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();
		
		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);
	
		list.add("추가");
		
		// [zip, banana, apple, candy, 추가, dog, enum]
		System.out.println(list);
	}
}

 


 

[ addAll() ]

  • 제공한 다른 컬렉션의 값을 합쳐줌
  • 중복된 값은 무시
package study.first;

import java.util.HashSet;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();

		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);

		HashSet<String> list2 = new HashSet<String>();
		list2.add("apple");
		list2.add("추가");
		list2.add("추가추가");

		list.addAll(list2);

		// [zip, banana, apple, candy, 추가, 추가추가, dog, enum]
		System.out.println(list);		
	}
}

 


 

[ contains() ]

  • 제공한 값이 Set에 있는지 여부를 확인하여 true / false 반환
package study.first;

import java.util.HashSet;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();

		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);

		System.out.println(list.contains("zip")); // true
	}
}

 


 

 [ remove() / removeAll() ]

  • remove() : 제공한 값을 제거 
  • removeAll() : 제공한 컬렉션이 가진 모든 값을 찾아서 제거
package study.first;

import java.util.HashSet;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();

		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);

		list.remove("zip");  // "zip" 삭제
		System.out.println(list.contains("zip"));  // false

		HashSet<String> list2 = new HashSet<String>();
		list2.add("apple");
		list2.add("candy");
				
		list.removeAll(list2);     // list2의 항목 찾아서 삭제
		System.out.println(list);  // [banana, dog, enum]
	}
}

 


 

Set 타입을 순서대로 정렬하고 싶으면 Set 타입 자체는 정렬할 수 없는 구조이므로 리스트 계열에 담아서 정렬하면 됩니다. 일반적으로 List 클래스를 생성해서 값을 담고, Collections 클래스를 이용해 정렬합니다. 배열의 정렬에 관해서는 따로 정리하도록 하겠습니다.

package study.first;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

public class Main {

	public static void main(String[] args) {

		String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
		HashSet<String> list = new HashSet<String>();

		// 데이터 저장
		for (int i = 0; i < value.length; i++)
			list.add(value[i]);

		// 데이터 정렬
		List<String> arr = new ArrayList<String>(list);		
		Collections.sort(arr);
		
		// [apple, banana, candy, dog, enum, zip]
		System.out.println(arr);		
	}
}

 

728x90

댓글

💲 추천 글