본문 바로가기
Java

자바의 자료구조-Set,HashSet 개념 및 사용법

by Ms.Pudding 2022. 1. 7.

일단 자바에서는 인터페이스로 기능을 구현하여 밑에 클라스들이 각각 다른 기능으로 쓸 수 있게 만들어준 편리한 프로그램이 있다. 이를 자료구조라고 하며, Set과 HashSet도 그 중의 하나이다.

위에 그림에서 보듯이 HashSet은 Set인터페이스로 구현할 수 있으며 Set은 모든 값의 집합을 말한다.

 


 

Set의 특징..

 

1.값의 순서를 신경쓰지 않으며 데이터가 존재 유무만 중요하다.

예를 들어 웹 사이트에서 하루에 접속하는 사람들 의 ip를 구하고자 할때

한사람이 여러번 접속하면 한 IP가 여러번 찍힌다. 이때 Set을 쓰면 중복되서 ip를 카운팅 하지 않아도 된다.

유일한 값을 하나만 가지며, 수학에서 집합같은 개념이다.

 

 

2.list값을 하나만 받아올 수 있으며,  인터페이스이기 때문에 다른 객체를 통해 받아 올 수 있다.

 

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

aespa.add("karina");
aespa.add("ningning");
aespa.add("winter");
aespa.add("giselle");

System.out.println(aespa);
System.out.println(aespa.size());

인터페이스이기 때문에 new Set 이런식으로 만들 수 없다.

Set인터페이스 안에 Set인터페이스를 구현한 HashSet이 들어있다.
->
[karina, giselle, winter, ningning]
4

3.특정한 순서를 가지고 있지 않기 때문에 getter로 꺼낼 수가 없고 Iterator 함수로 꺼내야 한다.

Iterator란 자바 컬렉션 자료구조에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법 중에 하나이다.

//1.Set을 선언한다.

HashSet<String> aespa = new HashSet<String>();


	//2.aespa에 값을 더해주기

	aespa.add("karina")

	aespa.add("winter")

	aespa.add("ningning")

	aespa.add("giselle")


	//3.Iterator 안에 hashset을 담기 

Iterator<String> iter = aespa.iterator();


//4.hasNext()와 next()로 값 출력


for(iter.hasNext()){

	System.out.println(iter.next());

}

 

참고로 HashMap을 꺼낼 때도 iterator를 사용할 수도 있는데 , iterator는 Set이랑 list에만 있기 때문에 set을 선언 후에 iterator로 꺼내 줘야 한다.  근데 HashMap은 키값이 있어서 그냥 for문으로 뺴올 수 있음 

  //해쉬맵선언 
  HashMap<Integer,String> country = new HashMap();
  //해쉬맵에 키와 값을 저장 
        country.put(1,"Korea");
        country.put(2,"France");
        country.put(3,"USA");
        country.put(4,"Canada");
        country.put(5,"Australia");
  //country를 entrySet() 에 담아 Set타입으로 storedSet에 넣음
 //여기서 storedSet의 값은 Set<Map.Entry<Integer,String>>임 
Set storedSet = country.entrySet();
//Iterator선언(map에는 없어서, set타입으로 저장한 후에 쓸 수 있음)
Iterator iterator = storedSet.iterator();
        while(iterator.hasNext()){
            Map.Entry mentry = (Map.Entry)iterator.next();
            System.out.println("Key is: "+ mentry.getKey() + " value is: ");
            System.out.println(mentry.getValue());
            }

'Java' 카테고리의 다른 글

abstract 클라스, 추상클라스 vs 인터페이스  (0) 2022.01.08
자바의 자료구조- Map,HashMap  (0) 2022.01.07
Stringbuffer 클래스  (0) 2022.01.07
인스턴스 변수, 클래스 변수 , static변수  (0) 2022.01.07
Arrays.asList()란  (0) 2022.01.07

댓글