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);
		
		
	}

}