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
'▸JAVA > 라이브러리(API)' 카테고리의 다른 글
java.util.TreeSet 주요 메소드 [1/1] (2) | 2019.12.11 |
---|---|
java.util.HashSet 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.HashMap 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.LinkedList 주요 메소드 [1/1] (2) | 2019.12.10 |
java.util.Vector 주요 메소드 [1/1] (2) | 2019.12.10 |
댓글