
일단 자바에서는 인터페이스로 기능을 구현하여 밑에 클라스들이 각각 다른 기능으로 쓸 수 있게 만들어준 편리한 프로그램이 있다. 이를 자료구조라고 하며, 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 이런식으로 만들 수 없다.
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 |
댓글