▸JAVA/라이브러리(API)

java.util.TreeMap 주요 메소드 [1/1]

코데방 2019. 12. 11.
728x90

[ TreeMap Class ]

  • 컬렉션 프레임워크 Map 계열의 TreeMap 자료구조를 구현한 클래스
  • 입력 순서에 상관 없이 자료를 트리 구조로 만들어 저장 및 검색

컬렉션 프레임워크 및 Map 계열의 기본 개념은 아래 글을 참조하시면 됩니다.

 

2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4]

2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_MAP 계열 [2/4]

 

 

 


 

[ 생성자 ]

  • 다른 맵계열과 마찬가지로 키(key)와 값(value)의 타입을 제네릭으로 지정
  • new TreeMap<키타입, 값타임>();
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
	}
}

 


 

[ put() ]

  • 키와 값 추가
  • 키 값은 중복되면 안됨 (중복 시 기존 값을 덮어씀)
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "a", "b", "c", "d", "e" };
		String[] value = { "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);
		
		// {a=apple, b=banana, c=candy, d=dog, e=enum}
		System.out.println(list);
	}
}

 


 

[ ceilingEntry() / ceilingKey() / floorEntry() / floorKey() ]

  • ceilingEntry() : 제공된 키 값보다 크거나 같은 값 중 가장 작은 키의 Entry를 반환
  • ceilingKey() : 제공된 키 값보다 크거나 같은 값 중 가장 작은 키의 키값을 반환
  • floorEntry() : 제공된 키 값보다 같거나 작은 값 중 가장 큰 키의 Entry를 반환
  • floorKey() : 제공된 키 값보다 같거나 작은 값 중 가장 큰 키의 키값을 반환
  • Entry란 키와 값을 저장하고 있는 Map의 내부 클래스 (C언어 구조체의 역할과 유사함)
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "a", "b", "c", "d", "e" };
		String[] value = { "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		System.out.println(list.ceilingEntry("A")); // "a=apple"
		System.out.println(list.ceilingKey("A"));   // "a"
		
		System.out.println(list.floorEntry("z"));   // "e=enum"
		System.out.println(list.floorKey("z"));     // "e"
	}
}

 


 

[ higherEntry() / higherKey() / lowerEntry() / lowerKey() ]

  • 위의 메소드와 비슷하지만, "같거나"가 빠짐
  • 더 큰 값 중에서 가장 작은 값, 더 작은 값 중에서 가장 큰 값을 Entry 또는 key 타입으로 반환함
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "a", "b", "c", "d", "e" };
		String[] value = { "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);
		
		System.out.println(list.higherEntry("a"));  // "b=banana"
		System.out.println(list.higherKey("a"));    // "b"
		System.out.println(list.lowerEntry("e"));   // "d=dog"
		System.out.println(list.lowerKey("e"));     // "d"
	}
}

 

 

 

[ entrySet()  / keySet() ]

  • 맵의 Entry / Key 정보를 담은 Set 생성
  • Key값 기준으로 오름차순 정렬
package study.first;

import java.util.Map;
import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "a", "b", "c", "d", "e" };
		String[] value = { "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);
		
		// [a=apple, b=banana, c=candy, d=dog, e=enum]
		System.out.println(list.entrySet());
	}
}

 


 

[ firstEntry() / firstKey() / lastEntry() / lastKey() ]

  • 현재 맵에서 가장 큰 작은 키 값(first) / 큰 키 값(last)에 대한 정보를 반환함
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "z","a", "b", "c", "d", "e" };
		String[] value = { "zip", "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		System.out.println(list.lastEntry());   // "z=zip"
		System.out.println(list.lastKey());     // "z"
		System.out.println(list.firstEntry());  // "a=apple"
		System.out.println(list.firstKey());    // "a"
	}
}

 


 

[ pollFirstEntry() / pollLastEntry() ]

  • 현재 맵에서 가장 큰 작은 키 값(first) / 큰 키 값(last)의 Entry를 반환 후 삭제
package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "z","a", "b", "c", "d", "e" };
		String[] value = { "zip", "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		System.out.println(list.pollLastEntry());   // "z=zip" 반환 후 삭제
		System.out.println(list.pollFirstEntry());  // "a=apple" 반환 후 삭제
		
		System.out.println(list);   // {b=banana, c=candy, d=dog, e=enum}
	}
}

 


 

[ headMap() ]

  • 제공된 키보다 작은 키 값의 Entry를 SortedMap에 담아 반환
  • 2번 째 인자로 true를 줄 경우 지정된 키도 포함
package study.first;

import java.util.SortedMap;
import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "z","a", "b", "c", "d", "e" };
		String[] value = { "zip", "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		SortedMap<String, String> s = list.headMap("d");		
		System.out.println(s);  // {a=apple, b=banana, c=candy}
		
		SortedMap<String, String> s2 = list.headMap("d", true);
		System.out.println(s2); // {a=apple, b=banana, c=candy, d=dog}		
	}
}

 


 

[ tailMap() ]

  • 제공된 키보다 크거나 같은 값의 Entry를 SortedMap에 담아 반환
  • 2번 째 인자로 flase를 줄 경우 지정된 키를 포함하지 않음
package study.first;

import java.util.SortedMap;
import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "z","a", "b", "c", "d", "e" };
		String[] value = { "zip", "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		SortedMap<String, String> s = list.tailMap("d");		
		System.out.println(s);  // {d=dog, e=enum, z=zip}
		
		SortedMap<String, String> s2 = list.tailMap("d", false);
		System.out.println(s2); // {e=enum, z=zip}		
	}
}

 


 

TreeMap의 정보 또한 다른 Map 계열과 마찬가지로 확장 for문을 사용하면 간단한 형식으로 순회가 가능합니다. setKey() 메소드로 Key값의 배열을 생성해서 적절히 사용하면 됩니다. 

 

package study.first;

import java.util.TreeMap;

public class Main {

	public static void main(String[] args) {

		TreeMap<String, String> list = new TreeMap<String, String>();
		
		String[] key = { "z", "a", "b", "c", "d", "e" };
		String[] value = { "zip", "apple", "banana", "candy", "dog", "enum" };
		
		// 데이터 삽입
		for (int i = 0; i < key.length; i++)
			list.put(key[i], value[i]);

		// 트리맵 순회
		for (String a : list.keySet())
			System.out.println(a + " : " + list.get(a));		
	}
}
728x90

댓글

💲 추천 글