JAVA

컬렉션 프레임웤 TreeMap

연93 2022. 10. 11. 22:08
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class TreeMapExample1 {

	// 객체를 찾거나 범위검색에 속도가 빠르다. 그에 따른 메소드를 지원한다.
	// 이진트리로 구조를 갖고 있다. 데이타가 저장시 오름차순으로 정렬구조로 관리된다.
	public static void main(String[] args) {
		TreeMap<Integer, String> scores = new TreeMap<Integer, String>();
		scores.put(new Integer(87), "김동연");
		scores.put(new Integer(98), "송지은");
		scores.put(new Integer(75), "송삼색");
		scores.put(new Integer(95), "지은");
		scores.put(new Integer(80), "고등어");
		
		Entry<Integer, String> entry = null;
		
		entry = scores.firstEntry();
		System.out.println("가장 낮은 점수: " + entry.getKey() + "-" + entry.getValue());
		
		entry = scores.lastEntry();
		System.out.println("가장 높은 점수: " + entry.getKey() + "-" + entry.getValue());
		
		entry = scores.lowerEntry(new Integer(95));
		System.out.println("95보다 바로 아래 점수: " + entry.getKey() + "-" + entry.getValue());
		
		entry = scores.higherEntry(new Integer(95));
		System.out.println("95보다  바로 위 점수: " + entry.getKey() + "-" + entry.getValue());
		
		entry = scores.floorEntry(new Integer(95));
		System.out.println("95이거나  바로 아래 점수: " + entry.getKey() + "-" + entry.getValue());
		
		entry = scores.ceilingEntry(new Integer(85));
		System.out.println("85이거나   바로 위 점수: " + entry.getKey() + "-" + entry.getValue());
		
		while(!scores.isEmpty()) {
			entry = scores.pollFirstEntry(); //낮은 점수 -> 큰 점수 꺼내오고, 제거
			System.out.println(entry.getKey() + "-" + entry.getValue() + " (남은 객체 수: " + scores.size());
		}
		

	}

}
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapExample2 {

	public static void main(String[] args) {
		
		// 문자열 데이타는 유니코드로 정렬구조를 가지고 있다.  0 ~ 65535 범위(Ascii Code포함)
		TreeMap<Integer, String> scores = new TreeMap<Integer, String>();
		scores.put(new Integer(87), "김동연");
		scores.put(new Integer(98), "송지은");
		scores.put(new Integer(75), "송삼색");
		scores.put(new Integer(95), "지은");
		scores.put(new Integer(80), "고등어");
		
		//내림차순
		NavigableMap<Integer, String> descendingMap = scores.descendingMap();
		Set<Entry<Integer, String>> descendingEntrySet = descendingMap.entrySet();
		for(Entry<Integer, String> entry : descendingEntrySet) {
			System.out.print(entry.getKey() + "-" + entry.getValue() + " ");
		}
		System.out.println();
		
		//오름차순
		NavigableMap<Integer, String> ascendingMap = descendingMap.descendingMap();
		Set<Entry<Integer, String>> ascendingEntrySet = ascendingMap.entrySet();
		for(Entry<Integer, String> entry : ascendingEntrySet) {
			System.out.print(entry.getKey() + "-" + entry.getValue() + " ");
		}
	}

}
import java.util.Map;
import java.util.NavigableMap;
import java.util.TreeMap;

public class TreeMapExample3 {

	public static void main(String[] args) {
		TreeMap<String, Integer> treeMap = new TreeMap<String, Integer>();
		treeMap.put("apple", new Integer(10));
		treeMap.put("forever", new Integer(60));
		treeMap.put("description", new Integer(40));
		treeMap.put("ever", new Integer(50));
		treeMap.put("zoo", new Integer(10));
		treeMap.put("base", new Integer(20));
		treeMap.put("guess", new Integer(70));
		treeMap.put("cherry", new Integer(30));
		
		System.out.println("[c~f 사이의 단어검색]"); // f 한개문자 포함되고, f로 시작하는 문자열은 포함이 안된다.
		NavigableMap<String, Integer> rangeMap = treeMap.subMap("c", true, "f", true);
		for(Map.Entry<String, Integer> entry : rangeMap.entrySet()) {
			System.out.println(entry.getKey() + "-" + entry.getValue() + "페이지");
		}

	}

}

'JAVA' 카테고리의 다른 글

제네릭 메소드  (0) 2022.10.12
멀티 타입 파라미터  (0) 2022.10.12
컬렉션 프레임웤 Hashtable  (0) 2022.10.11
컬렉션 프레임웤 HashMap  (1) 2022.10.11
컬렉션 프레임웤 Set 컬렉션  (0) 2022.10.11