본문 바로가기

자바

HashSet기초 (자바)

Set은 객체를 중복해서 저장할 수 없고(자동으로 중복 제거), 하나의 null값만 저장 할 수 있으며, 저장 순서가 유지되지 않는다. (저장 순서를 유지하기 위해서는 JDK 1.4부터 제공하는 LinkedHashSet 클래스 이용)

HashSet은 TreeSet과 다르게 자동 정렬이 되지 않는다 

 

HashSet 선언 방법

 

HashSet<Integer> h1 = new HashSet<Integer>();//타입 지정
HashSet<Integer> h2 = new HashSet<>();//new에서 타입 생략가능
HashSet<Integer> h3 = new HashSet<Integer>(h1);//h1의 모든 값을 가진 HashSet생성
HashSet<Integer> h4 = new HashSet<Integer>(10);//초기 용량(capacity)설정
HashSet<Integer> h6 = new HashSet<Integer>(Arrays.asList(1,2,3));//초기값 지정

HashSet 기초 명령어 예제

→HashSet 값 추가

public class Main {
    public static void main(String[] args)  {
        HashSet<Integer> h = new HashSet<Integer>();

        h.add(1);
        h.add(2);
        h.add(3);
        h.add(1);
        System.out.println(set); //[1, 2, 3]
    }
}

→HashSet 값 삭제

public class Main {
    public static void main(String[] args)  {
        HashSet<Integer> h = new HashSet<Integer>(Arrays.asList(1,2,3));
        h.remove(1); // value 1 삭제
        h.clear(); // 전체 값 삭제
        System.out.println(h); //[1, 2, 3]
    }
}

→HashSet 크기 반환

public class Main {
    public static void main(String[] args)  {
        HashSet<Integer> h = new HashSet<Integer>(Arrays.asList(1,2,3));

        System.out.println(h.size()); //3
    }
}

→HashSet 값 출력

public class Main {
    public static void main(String[] args)  {
        HashSet<Integer> h = new HashSet<Integer>(Arrays.asList(1,2,3));
        System.out.println(h); //[1, 2, 3]
        Iterator iter = h.iterator(); //Iterator 사용
        while(iter.hasNext()) { //다음 값이 있는지 확인
            System.out.print(iter.next() + " "); // 1 2 3
        }
    }
}

HashSet은 인덱스로 값을 반환하는 get 메소드가 없다. 대신 iterator인터페이스를 구현한 객체의 iterator()메소드를 호출하여 값을 얻을 수 있다.iterator에서 하나의 객체를 가져올 때는 next()메소드를 이용한다. hashNext()메소드를 통해 가져올 객체가 있는지 없는지 확인 할 수 있다.(true,false)

 

→HashSet 값의 유무 확인

public class Main {
    public static void main(String[] args)  {
        HashSet<Integer> h = new HashSet<Integer>(Arrays.asList(1,2,3));
        System.out.println(h.contains(1)); //true
        System.out.println(h.contains(4)); //false

    }
}

'자바' 카테고리의 다른 글

[자바] CompareTo  (0) 2023.01.13
[자바] 람다식 개념 및 표현법  (0) 2023.01.12
Vector 기초 (자바)  (0) 2023.01.07
Stack 기초 (자바)  (0) 2023.01.06
LinkedList 기초 (자바)  (0) 2023.01.06