Java - Hashset

왈왈왈 (Yoon tae uk)·2021년 7월 5일
0

HashSet 이란?

HashSet은 Set의 구현 인터페이스의 구현클래스 이기 때문에 Set의 성질을 상속 받는다.

Set은 List와 다르게 순서가 보장되지 않는 자료구조이다.

HashSet 특징

  • 순서가 보장되지 않는다.
  • 중복된 값을 허용하지 않는다.
  • null요소를 허용한다.
  • 내부적으로 Map을 사용한다.

HashSet의 메소드

  • add()
  • size()
  • clear()
  • remove()
  • removeAll()
  • contains()
  • iterator()
  • isEmpty()

HashSet.add()

add() 메소드는 인자를 저장하고, 입력되는 값이 set에 존재하지 않는다면 True를 반환하고, 이미 존재한다면 false를 반환한다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(3);
System.out.println("set1" + set1);
//set1[1, 2, 3]

HashSet.remove()

remove() 는 매개변수의 값이 HashSet 내부에 존재한다면 그 값을 삭제하고 true를 반환하고 없을시 false를 반환한다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(3);
System.out.println("set1" + set1);
//set1[1, 2, 3]
set1.remove(2);
System.out.println("set1" + set1);
//set11[1, 3]

HashSet.Clear()

clear()는 HashSet의 모든값을 삭제한다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(3);
System.out.println("set1" + set1);
//set1[1, 2, 3]
set1.clear();
System.out.println("set1" + set1);
//set1[]

HashSet.contains()

contains()는 HashSet 내부에 객체가 존재하는지 확인한다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(3);
System.out.println("set1" + set1);
//set1[1, 2, 3]
System.out.println("set1" + set1.contains(1));
System.out.println("set1" + set1.contains(7));
//set1 true
//set1 false

HashSet.iterator()

iterator() 는 객체를 한 번씩 반복해서 가져오는 반복자 Iterator를 제공한다, 이 객체로 Hashset내의 모든 값을 한번씩 순회한다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(3);
System.out.println("set1" + set1);
//set1[1, 2, 3]
Iterator iter = set1.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
}
//1
//2
//3

중복값과 null

위에서 말했듯이 set은 null요소는 허용하지만, 중복값은 허용하지 않는다.

HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1);
set1.add(2);
set1.add(null);
set1.add(3);
set1.add(2);
System.out.println("set1" + set1);

//set1 [null, 1, 2, 3]

0개의 댓글