JAVA/16_collection
Set - HashSet(형태, 데이터넣기, 출력-while,확장for,for이용)
Y_____527
2021. 3. 7. 23:06
출처: www.tcpschool.com/java/java_collectionFramework_set
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
HashSet<E> 클래스
HashSet 클래스는 Set 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나입니다.
JDK 1.2부터 제공된 HashSet 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠릅니다.
이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장합니다.
HashSet 클래스는 Set 인터페이스를 구현하므로, 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않습니다.
만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 됩니다.
- HashSet<String> hs = new HashSet<String>(); =>String타입의 HashSet생성
- HashSet<Integer> hs2 = new HashSet<Integer>();
- Set set = new HashSet(); =>자료형지정X, Set(부모클래스)를 이용해서 HashSet(자손클래스)객체 생성 가능
- hs.add( ~~ ); =>set안에 요소 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
package ex05.collection.set;
import java.util.HashSet;
import java.util.Iterator;
//Set: 순서없고, 중복허용하지 않음
public class Ex02_HashSet {
public static void main(String[] args) {
//형태1)
// HashSet<String> hs = new HashSet(); //jdk 5.x 이전에 사용할때 ~
//< >는 타입파라미터 -> 타입을 제한
//형태2)
HashSet<String> hs = new HashSet<String>();
//Set타입으로 HashSet객체 생성도 가능
//Set hs = new Set은 불가능->인터페이스는 스스로 객체 생성 x
hs.add("키보드");
hs.add("마우스");
hs.add("컵");
hs.add("볼펜");
hs.add("키보드"); //set은 중복 허용 x -> 처음에 나온 "키보드" 를 덮어 쓴다
System.out.println("요소 개수: " + hs.size()); //중복 허용 x -> 4개 출력
Iterator it = hs.iterator();
//Set안의 값을 불러오기 위해선 Iterator 사용해야함 (리턴타입도 iterator이여야함)
//it안에 Set안의 값들이 들어있게됨
while(it.hasNext()) { //다음 요소가 있다면..
System.out.println(it.next()); //요소를 꺼내와서 출력
//순서 없이 나옴
} //while end
//< >타입파라미터에는 레퍼런스타입(참조형데이터타입)이와야함
//<> type parameter(타입을 제한함) -> <String>, <Integer> 레퍼런스 타입
// HashSet<int> hs2 = new HashSet<int>(); => 기본자료형은 X
// HashSet<double> hs3 = new HashSet<double>(); => 기본자료형은 X
HashSet<Integer> hs2 = new HashSet<Integer>();
HashSet<Double> hs3 = new HashSet<Double>();
hs2.add(100);
hs2.add(3);
hs2.add(10040);
hs2.add(3);
// hs2.add("문자문자"); => 에러 but, <>타입파라미터를 쓰지 않으면 가능!!
System.out.println("h2 요소 개수: " + hs2.size());
it = hs2.iterator();
//1))출력-while문 이용
System.out.println("\n----------------while-------------------");
while(it.hasNext()) { //다음 요소가 있다면..
System.out.println(it.next()); //요소를 꺼내와서 출력
//순서 없이 나옴
} //while end
//2))출력-확장for문 이용
System.out.println("\n----------------foreach-------------------");
for (Object item : hs2) {
System.out.println(item);
} //foreach end
//3))출력-for문 이용
System.out.println("\n---------------for--------------------");
for(int i=0; i<1; i++) {
System.out.println(hs2);
} //for end
}
}
|
cs |