본문 바로가기

코딩 공부/Java

Hash Set

Set

특징 : 임의의 저장 순서 중복 저장 불가 : 중복이 되면 저장되지 않는다

종류 : ▷Hashset(인덱스를 갖고 있지 않다.) ▷treeset

기능 메소드 설명
객체추가 boolean add(E e) 주어진 객체를 저장하고 성공적으로 저장되면 true
중복객체면false리턴
객체검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부
isEmpty() 컬렉션이 비어있는지 조사
Iterator<E> iterator 저장된 객체를 한번씩 가져오는 반복자 리턴
int size() 저장된 전체 객체 수 리턴
객체삭제 void clear() 저장된 모든 객체를 삭제
boolean remove(Object o) 주어진 객체를 삭제 

 

중복이 안되는 데이터 저장소. (Ex : Lotto Number)

 

Hash Set

1.add

package hashsets;
import java.util.ArrayList;
import java.util.HashSet;
public class Ex01 {
	public static void main(String[] args) {
		HashSet<String> hs= new HashSet<>();
		hs.add("라면"); hs.add("김밥"); hs.add("순대"); hs.add("김밥");
		System.out.println("HashSet : "+hs);
		
		ArrayList<String> arr= new ArrayList<>();
		arr.add("라면"); arr.add("김밥"); arr.add("순대"); arr.add("김밥");
		System.out.println("ArrayList : "+arr);
	}
}
HashSet : [김밥, 순대, 라면]
ArrayList : [라면, 김밥, 순대, 김밥]

2.boolean반환 예. remove

package hashsets;
import java.util.ArrayList;
import java.util.HashSet;
public class Ex03 {
	public static void main(String[] args) {
		HashSet<String> hs= new HashSet<>();
		boolean bool;
		bool = hs.add("라면");		System.out.println(bool);
		bool = hs.add("샌드위치");		System.out.println(bool);
		bool = hs.add("라면");		System.out.println(bool);
		bool = hs.add("김밥");		System.out.println(bool);
		System.out.println("HashSet : "+hs);
		System.out.println(hs.remove("라면"));
		System.out.println(hs.remove("김밥"));
		System.out.println("HashSet : "+hs);
		
	}
}
true
true
false
true
HashSet : [김밥, 샌드위치, 라면]
true
true
HashSet : [샌드위치]

3. isEmpty, contains

package hashsets;
import java.util.HashSet;
public class Ex04 {
	public static void main(String[] args) {
		HashSet<String> hs= new HashSet<>();
		boolean bool;
		bool = hs.add("라면");				
		bool = hs.add("샌드위치");		
		bool = hs.add("라면");		
		bool = hs.add("김밥");		
		System.out.println("HashSet : "+hs);
		
		System.out.println("isEmpty() : "+hs.isEmpty());
		if(hs.contains("샌드위치1")) {
			System.out.println("데이터가 존재합니다.");
		}else System.out.println("데이터가 존재하지 않습니다.");
		
		
	}
}
HashSet : [김밥, 샌드위치, 라면]
isEmpty() : false
데이터가 존재하지 않습니다.

4. Iterator, Collections.sort

데이터를 가지고 오는 방법

package hashsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
public class Ex05 {
	public static void main(String[] args) {
		HashSet<String> hs= new HashSet<>();
		
		hs.add("1.대부");
		hs.add("2.반지의제왕");
		hs.add("3.겨울왕국");
		hs.add("4.다크나이트");
		hs.add("5.해리포터");
		hs.add("6.공공의적");
		
		for(String data : hs) {
			System.out.println(data);
		}
		
		System.out.println();
		Iterator<String> it = hs.iterator();
		while(it.hasNext()) {
			String data2 = it.next();
			System.out.println(data2);
		}
	ArrayList<String> list = new ArrayList<>(hs);
	//list.sort(null);//오름차순
	//System.out.println(list);
	Collections.sort(list);//오름차순
	System.out.println(list);
	Collections.reverse(list);//내림차순(오름차순이 되어있어야 뒤집을 수있다)
	System.out.println(list);
	
	}
}

 

1.대부
5.해리포터
2.반지의제왕
3.겨울왕국
6.공공의적
4.다크나이트

1.대부
5.해리포터
2.반지의제왕
3.겨울왕국
6.공공의적
4.다크나이트
[1.대부, 2.반지의제왕, 3.겨울왕국, 4.다크나이트, 5.해리포터, 6.공공의적]
[6.공공의적, 5.해리포터, 4.다크나이트, 3.겨울왕국, 2.반지의제왕, 1.대부]

5. iterator,remove(),hasNext()

hasNext() : 데이터가 있으면 true 없으면 false 

package hashsets;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class Ex06 {
	public static void main(String[] args) {
		HashSet<String> hs= new HashSet<>();
		
		hs.add("1.대부");
		hs.add("2.반지의제왕");
		hs.add("3.겨울왕국");
		hs.add("4.다크나이트");
		hs.add("5.해리포터");
		hs.add("6.공공의적");
		System.out.println(hs);
		
		Scanner sc = new Scanner(System.in);
		System.out.print("삭제할 책 :");
		String name = sc.nextLine();
	
		Iterator<String> it = hs.iterator();
		while(it.hasNext()) {
			if(name.equals(it.next())) {
			System.out.println("삭제완료");
			it.remove();
			}
		}
		System.out.println(hs);
	
	
	}
}
[1.대부, 5.해리포터, 2.반지의제왕, 3.겨울왕국, 6.공공의적, 4.다크나이트]
삭제할 책 :2.반지의제왕
삭제완료
[1.대부, 5.해리포터, 3.겨울왕국, 6.공공의적, 4.다크나이트]


'코딩 공부 > Java' 카테고리의 다른 글

클래스  (0) 2022.08.22
HashMap  (0) 2022.08.21
Collection Framework & ArrayList  (0) 2022.08.19
메모리 구조와 배열  (0) 2022.08.18
JAVA Random  (0) 2022.08.17