Set
: Set은 중복이 없고, 순서도 없는 자료구조.
구현 클래스로는 Hashset과 TreeSet이 있다.
set 인터페이스를 구현한 클래스를 사용하는 방법
- HashSet을 인스턴스로 만들어보자
Set은 인터페이스이기때문에 new해서 객체를 생성할 수 없다
Set을 구현한 클래스인 HashSet 이용해서 인스턴스를 만든다.
Set<String> set1 = new HashSet<>(); // String 값만 담을 수 있음.
Boolean flag1 = set1.add("Hong"); // add를 활용해서 값을 저장
Boolean flag2 = set1.add("Kim");
Boolean flag3 = set1.add("Hong");
* set이라는 자료구조의 크기가 얼마냐를 출력 - size() 이용
System.out.println(set1.size()); // 출력: 2 이유 - 같은 값이 있었기 때문이다.
* 저장할 때 반환했던 Boolean 값 출력
System.out.println(flag1); //true
System.out.println(flag2); //true
System.out.println(flag3); //false -> 같은 값이 또 들어갔을 때는 false를 반환
set 자료 구조에서 이 들어있는 값들을 하나씩 하나씩 꺼내보기위해서는
set에 부모클래스인 컬렉션이 가지고 있는 lterator라는 인터페이스를 이용해야지만 한다.
set으로부터 Iterator를 구한다.
* Iterator 인터페이스 이용
Iterator<String> iter = set1.iterator(); // iterator 인터페이스를 구현한 객체가 리턴된다.
이때, 여기에 들어있는 값을 하나씩 꺼낼 때에는
Iterator는 hasNext라고 하는 메소드를 가지고 있는데
이 메소드는 지금 현재 set의 자료구조에 데이터가 있니? 라고 물어봐서
있으면 true, 없으면 false를 반환해주는 메소드이다.
값을 다 꺼낼 때, 인덱스가 필요한 것이 아니기 때문에 for 구문보다는 while문을 활용하면 된다.
Iterator가 제공하고 있는 hasNext라는 메소드를 이용하게되면,
데이터가 있는 동안만 true를 리턴할 것이기 때문에 데이터를 모두 꺼내올 수 있다.
while(iter.hasNext()){
// iterator가 가지고 있는 next()
// 해당 메소드는 값을 꺼내줘라는 메소드
// 하나를 꺼내주고 하나를 꺼내면 자동으로 다음 것을 참조하게 된다.
String str = iter.next(); // String 값을 가지고 있었기 때문에 string 타입으로 값을 꺼내준다.
System.out.println(str);
}
-- 전체코드
package java03.day04;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetExam {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>();
Boolean flag1 = set1.add("Hong");
Boolean flag2 = set1.add("Kim");
Boolean flag3 = set1.add("Hong");
System.out.println(set1.size());
System.out.println(flag1); //true
System.out.println(flag2); //true
System.out.println(flag3); //false
Iterator<String> iter = set1.iterator();
while(iter.hasNext()){
String str = iter.next();
System.out.println(str);
}
}
}
-- 출력 결과
'PL(ProgrammingLanguage) > JAVA' 카테고리의 다른 글
Java - List (0) | 2021.10.22 |
---|---|
Java - Set 실습 (0) | 2021.10.22 |
String Method (0) | 2021.10.21 |
String 클래스 - 메소드 (0) | 2021.10.21 |
입력받은 수 n만큼 무작위 정수를 출력 (0) | 2021.10.21 |