HashSet의 메소드 예제들
import java.util.HashSet;
import java.util.Iterator;
public class SetTest {
public static void main(String[] args) {
/* Set 메소드 예제*/
HashSet<Integer> set = new HashSet<Integer>(); //Set은 중복ㄴㄴ => int는 equals로 중복체크가 안돼서 int아니고 Integer
// .add(객체) : set에 객체를 추가 => list는 add(객체), add(번지,객체)두개였는데 Set은 순서보장을 안해서 (객체) 1개밖에없음
//*Set은 순서가 없으니까 번지로 접근하는 메소드들은 전부 없다고 생각하면 돼
set.add(13); //13이라는 값을 저장
set.add(13); //두번해도 중복이 안돼서 한번만 저장됨.
set.add(11); set.add(100);
set.add(3); set.add(4);
set.add(8); set.add(31);
set.add(33); set.add(29);
//.size() : set의 크기
System.out.println("set의 크기 :" + set.size()); //값:1 => 중복을 허용하지않아서 두번넣어도 1번으로 침
//contains(객체) : 객체가 있는지 없는지 확인
//indexOf()없음 => 번지가 없으니깐 ㅋ
System.out.println("set에 13이 있습니까? " + set.contains(13)); //true =>아까 10넣었음
System.out.println("set에 11이 있습니까? " + set.contains(11)); //false
//.isEmpty() : set이 비었는지 아닌지 확인
System.out.println("set이 비어있습니까? " + set.isEmpty()); //false
Iterator<Integer> it = set.iterator(); //List랑 Set쓸 때, 공식처럼 씀 // set.iterator(); 의 set은 맨위에 Hashset<>뒤 변수명
while(it.hasNext()) { //다음선택할 객체가있는지 알려주는 메소드=>true/false
//Iterator의<>클래스 안에 Integer가 있으면 (Integer)를 생략가능, <>클래스명에 Integer없으면 꼭 써야돼 (Integer)
Integer tmp = /*(Integer)*/ it.next(); //it.next()는 set에 있는 값 하나를 가져오는 것, scan.next()랑은 다른것
System.out.print(tmp+ " "); //한줄로 저장되어있는거 다 나왔음
} //저장한 순서대로 나오지 않고, 랜덤순으로 나옴
System.out.println();
//.remove() :객체를 삭제하고 삭제 성공 여부를 알림 => 삭제하려는 객체가 없으면 실패할 수 있음. 리턴타입 boolean (true/false)
System.out.println("set에 10의 값이 삭제 되었습니까? "+set.remove(10)); //false
System.out.println("set에 10의 값이 삭제 되었습니까? "+set.remove(100)); //true
//.clear() : 전체비움
set.clear();
System.out.println("set의 크기: "+ set.size()); //비워서 0
}
}
중복되지 않는 5개의 수가 입력 될 때 까지 입력한 후, 입력이 완료되면 종료하고 출력하는 코드
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class SetTest2 {
public static void main(String[] args) {
/* 중복되지 않는 5개의 수가 입력 될 때 까지 입력한 후, 입력이 완료되면 종료하는 코드를 작성하세요.
* 예시)
* 정수를 입력하세요 : 1
* 정수를 입력하세요 : 2
* 정수를 입력하세요 : 3
* 정수를 입력하세요 : 4
* 정수를 입력하세요 : 1
* 정수를 입력하세요 : 2
* 정수를 입력하세요 : 3
* 정수를 입력하세요 : 5
* 입력된 정수 : 1 2 3 4 5 (출력은 순서에 상관없이 나오는 것) =>만약에 순서가 상관이있으면List가 낫지
* */
Scanner scan = new Scanner (System.in);
HashSet<Integer> num = new HashSet<Integer>();
while(num.size()<5) {
System.out.print("정수를 입력하세요: ");
num.add(scan.nextInt());
}
Iterator<Integer> it = num.iterator();
while(it.hasNext()) {
System.out.print(it.next() + " ");
}
}
}
중복되지 않은 6개의 수를 랜덤으로 생성하여 저장한 후, 출력하는 코드
import java.util.HashSet;
import java.util.Iterator;
public class SetTest3 {
public static void main(String[] args) {
/* 중복되지 않은 6개의 수를 랜덤으로 생성하여 저장한 후, 출력하는 코드를 작성하세요.
* 단, 순자의 범위는 1~45 */
Integer min=1, max=45;
HashSet<Integer> randomNum= new HashSet<Integer>();
while(randomNum.size()<6) {
randomNum.add((int)(Math.random()*(max-min+1)+min));
}
System.out.print("랜덤으로 생성된 6개의 숫자: ");
Iterator<Integer> num = randomNum.iterator();
while(num.hasNext()) {
System.out.print(num.next()+" ");
}
}
}