JAVA/java ๊ณต๋ถ€

[JAVA] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ : Set (์ค‘๋ณตX, ์ˆœ์„œX)

congs 2023. 3. 26. 11:05

๐Ÿ“Œ Set

  • ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ €์žฅ
  • ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€x ⇒ index๋ฒˆ์ง€๊ฐ€ ์—†์Œ
  • ์ค‘๋ณต ํ—ˆ์šฉ X
  • HashSet<์ž๋ฃŒํ˜•> set = new HashSet<>();
    • index (๋ฒˆ์ง€) ์—†์Œ = ์ˆœ์„œ๋ณด์žฅx
    • get/set x
  • ์ •๋ ฌ : ์ˆœ์„œ๊ฐ€ ์—†์–ด์„œ ์ •๋ ฌ์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, set => list๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ •๋ ฌ -> ์‚ฌ์šฉ
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class Set01 {
public static void main(String[] args) {
/* Set ์ˆœ์„œ๋ณด์žฅx ์ค‘๋ณตx
 * HashSet 
	* - ํŠน์ง•: index(๋ฒˆ์ง€)๊ฐ€ ์—†์Œ
	* - get/set์ด ์—†์Œ 
	* */
		
HashSet<String> set = new HashSet<String>();
set.add("apple");
set.add("banana");
set.add("apple"); 
//์ˆœ์„œ๊ฐ€ ์—†์ง€๋งŒ, ๋“ค์–ด์˜ค๋Š” ์ˆœ์„œ์—๋”ฐ๋ผ ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋จผ์ €๋“ค์–ด์˜จ ๋ฌธ์ž๊ฐ€ ์‚ฌ๋ผ์ง
set.add("peach");
set.add("ํ™๊ธธ๋™");
set.add("์ด์ˆœ์‹ ");
		
System.out.println(set);
//์ถœ๋ ฅ์‹œ ์ˆœ์„œ์—†์ด ์ถœ๋ ฅ๋จ
		
//====================================================================
// ์ถœ๋ ฅ
for(String tmp: set) {
	System.out.println(tmp + " ");
}
		
Iterator<String> it = set.iterator();
while(it.hasNext());
	String tmp = it.next();
	System.out.println(tmp + " ");
		
//------------------------------------------------------------------------------------------	
    
//set์ •๋ ฌ : ์ˆœ์„œ๊ฐ€ ์—†์–ด์„œ ์ •๋ ฌ์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, set => list๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ •๋ ฌ -> ์‚ฌ์šฉ
List<String> list = new ArrayList<String>(set);
Collections.sort(list);
	
System.out.println(list);
	
//๋‚ด๋ฆผ์ฐจ์ˆœ
list.sort(new Comparator<String>() {

	@Override
	public int compare(String o1, String o2) {
			
		return o2.compareTo(o1);
			
});
	
System.out.println(list);
}
	
}

๐Ÿ“Œ TreeSet : ์ž๋™์œผ๋กœ set๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

  • first ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๊ฐ’
  • last ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ๊ฐ’
  • tailSet(a) a๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ๊ฐ’(ํฐ๊ฐ’)
  • headset(a) a๋ณด๋‹ค ์•ž์— ์žˆ๋Š” ๊ฐ’(์ž‘์€๊ฐ’)
  • subSet(a,b) a~b-1์‚ฌ์ด์— ์žˆ๋Š” ๊ฐ’
  • ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ฆฌ
NavigableSet<Integer> desSet = set.descendingSet();
System.out.println(desSet);
import java.util.HashSet;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeSet;

public class SetEx02 {

	public static void main(String[] args) {
		
		int[] score = {80, 98, 45, 95, 62, 57, 90};
		TreeSet<Integer> set = new TreeSet<>(); 
		
		//์ ์ˆ˜๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์ ์ˆ˜์™€ ๊ฐ€์žฅ ์ž‘์€ ์ ์ˆ˜ ์ถœ๋ ฅ
		
		for(int i=0; i<score.length; i++) {
			set.add(score[i]);
		}
		
		System.out.println(set);
		System.out.println("๊ฐ€์žฅ ์ž‘์€ ์ ์ˆ˜: "+set.first()); // ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๊ฐ’
		System.out.println("๊ฐ€์žฅ ํฐ ์ ์ˆ˜: "+set.last()); // ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ๊ฐ’
		
		System.out.println("==================================");
		//headSet : ์ง€์ •๋œ ๊ฐ์ฒด๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ์ถœ๋ ฅ, tailSet: ์ง€์ •๋œ ๊ฐ์ฒด๋ณด๋‹ค ํฐ๊ฐ’ ์ถœ๋ ฅ
		System.out.println(set.tailSet(80));//80๋ณด๋‹ค ํฐ ๊ฐ’ (๋’ค์— ์žˆ๋Š” ๊ฐ’)
		System.out.println(set.headSet(80));//80๋ณด๋‹ค ์ž‘์€ ๊ฐ’(์•ž์— ์žˆ๋Š” ๊ฐ’)
	
		//subSet(a,b) : aํฌํ•จ,b๋ฏธํฌํ•จ! ๋‘ ์ˆ˜์˜ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋Š” ๊ฐ’
		System.out.println(set.subSet(70, 90)); //70~89์‚ฌ์ด์˜ ๊ฐ’
		
		//<๋‚ด๋ฆผ์ฐจ์ˆœ Set>
		NavigableSet<Integer> desSet = set.descendingSet();
		System.out.println(desSet);
		
		
	}

}