进阶day04-具有排序功能的双列集合TreeMap的使用
This commit is contained in:
124
javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java
Normal file
124
javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
package com.inmind.map01;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/*
|
||||||
|
TreeMap 常用 API 总结
|
||||||
|
基本操作
|
||||||
|
put(K key, V value): 添加键值对,键重复时覆盖值
|
||||||
|
get(Object key): 获取指定键对应的值
|
||||||
|
remove(Object key): 删除指定键的键值对
|
||||||
|
containsKey(Object key): 判断是否包含指定键
|
||||||
|
containsValue(Object value): 判断是否包含指定值
|
||||||
|
size(): 返回键值对数量
|
||||||
|
clear(): 清空所有键值对
|
||||||
|
|
||||||
|
视图获取
|
||||||
|
keySet(): 返回所有键的 Set 集合
|
||||||
|
values(): 返回所有值的 Collection 集合
|
||||||
|
entrySet(): 返回所有键值对的 Set 集合
|
||||||
|
|
||||||
|
导航方法(有序特性相关)
|
||||||
|
firstEntry()/firstKey(): 获取第一个键值对 / 键
|
||||||
|
lastEntry()/lastKey(): 获取最后一个键值对 / 键
|
||||||
|
lowerKey(K key): 获取小于指定键的最大键
|
||||||
|
higherKey(K key): 获取大于指定键的最小键
|
||||||
|
floorEntry(K key): 获取小于等于指定键的最大键值对
|
||||||
|
ceilingEntry(K key): 获取大于等于指定键的最小键值对
|
||||||
|
|
||||||
|
子映射操作
|
||||||
|
headMap(K toKey): 返回键小于 toKey 的子映射
|
||||||
|
tailMap(K fromKey): 返回键大于等于 fromKey 的子映射
|
||||||
|
subMap(K fromKey, K toKey): 返回键在 [fromKey, toKey) 范围内的子映射
|
||||||
|
*/
|
||||||
|
public class TreeMapDemo08 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// 1. 创建TreeMap(默认按键的自然顺序排序)
|
||||||
|
TreeMap<Integer, String> treeMap = new TreeMap<>();
|
||||||
|
|
||||||
|
// 2. 创建TreeMap(指定比较器,如按键降序排序)
|
||||||
|
TreeMap<Integer, String> reverseMap = new TreeMap<>(Comparator.reverseOrder());
|
||||||
|
|
||||||
|
// 3. 添加元素(put())
|
||||||
|
treeMap.put(3, "Apple");
|
||||||
|
treeMap.put(1, "Banana");
|
||||||
|
treeMap.put(2, "Cherry");
|
||||||
|
treeMap.put(3, "Apricot"); // 键重复,会覆盖原有值
|
||||||
|
System.out.println("TreeMap内容: " + treeMap);
|
||||||
|
|
||||||
|
// 4. 获取指定键的值(get())
|
||||||
|
String value = treeMap.get(2);
|
||||||
|
System.out.println("键2对应的值: " + value); // 输出: Cherry
|
||||||
|
|
||||||
|
// 5. 删除指定键的键值对(remove())
|
||||||
|
treeMap.remove(1);
|
||||||
|
System.out.println("删除键1后: " + treeMap); // 输出: {2=Cherry, 3=Apricot}
|
||||||
|
|
||||||
|
// 6. 判断是否包含指定键(containsKey())
|
||||||
|
boolean hasKey = treeMap.containsKey(2);
|
||||||
|
System.out.println("是否包含键2: " + hasKey); // 输出: true
|
||||||
|
|
||||||
|
// 7. 判断是否包含指定值(containsValue())
|
||||||
|
boolean hasValue = treeMap.containsValue("Apricot");
|
||||||
|
System.out.println("是否包含值Apricot: " + hasValue); // 输出: true
|
||||||
|
|
||||||
|
// 8. 获取集合大小(size())
|
||||||
|
System.out.println("集合大小: " + treeMap.size()); // 输出: 2
|
||||||
|
|
||||||
|
// 9. 清空集合(clear())
|
||||||
|
// treeMap.clear();
|
||||||
|
|
||||||
|
// 10. 获取所有键的集合(keySet())
|
||||||
|
Set<Integer> keys = treeMap.keySet();
|
||||||
|
System.out.println("所有键: " + keys); // 输出: [2, 3]
|
||||||
|
|
||||||
|
// 11. 获取所有值的集合(values())
|
||||||
|
Collection<String> values = treeMap.values();
|
||||||
|
System.out.println("所有值: " + values); // 输出: [Cherry, Apricot]
|
||||||
|
|
||||||
|
// 12. 获取所有键值对(entrySet())
|
||||||
|
Set<Map.Entry<Integer, String>> entries = treeMap.entrySet();
|
||||||
|
System.out.println("所有键值对: " + entries);
|
||||||
|
// 输出: [2=Cherry, 3=Apricot]
|
||||||
|
|
||||||
|
System.out.println("----------------------TreeMap独有的排序功能---------------------------");
|
||||||
|
|
||||||
|
|
||||||
|
// 13. 获取第一个键值对(firstEntry())
|
||||||
|
Map.Entry<Integer, String> firstEntry = treeMap.firstEntry();
|
||||||
|
System.out.println("第一个键值对: " + firstEntry); // 输出: 2=Cherry
|
||||||
|
|
||||||
|
// 14. 获取最后一个键值对(lastEntry())
|
||||||
|
Map.Entry<Integer, String> lastEntry = treeMap.lastEntry();
|
||||||
|
System.out.println("最后一个键值对: " + lastEntry); // 输出: 3=Apricot
|
||||||
|
|
||||||
|
// 15. 获取小于指定键的最大键(lowerKey())
|
||||||
|
Integer lowerKey = treeMap.lowerKey(3);
|
||||||
|
System.out.println("小于3的最大键: " + lowerKey); // 输出: 2
|
||||||
|
|
||||||
|
// 16. 获取大于指定键的最小键(higherKey())
|
||||||
|
Integer higherKey = treeMap.higherKey(2);
|
||||||
|
System.out.println("大于2的最小键: " + higherKey); // 输出: 3
|
||||||
|
|
||||||
|
// 17. 获取小于等于指定键的最大键值对(floorEntry())
|
||||||
|
Map.Entry<Integer, String> floorEntry = treeMap.floorEntry(3);
|
||||||
|
System.out.println("小于等于3的最大键值对: " + floorEntry); // 输出: 3=Apricot
|
||||||
|
|
||||||
|
// 18. 获取大于等于指定键的最小键值对(ceilingEntry())
|
||||||
|
Map.Entry<Integer, String> ceilingEntry = treeMap.ceilingEntry(2);
|
||||||
|
System.out.println("大于等于2的最小键值对: " + ceilingEntry); // 输出: 2=Cherry
|
||||||
|
|
||||||
|
// 19. 截取子映射(headMap():键小于指定值)
|
||||||
|
SortedMap<Integer, String> headMap = treeMap.headMap(3);
|
||||||
|
System.out.println("键小于3的子映射: " + headMap); // 输出: {2=Cherry}
|
||||||
|
|
||||||
|
// 20. 截取子映射(tailMap():键大于等于指定值)
|
||||||
|
SortedMap<Integer, String> tailMap = treeMap.tailMap(2);
|
||||||
|
System.out.println("键大于等于2的子映射: " + tailMap); // 输出: {2=Cherry, 3=Apricot}
|
||||||
|
|
||||||
|
// 21. 截取子映射(subMap():键在[fromKey, toKey)范围内)
|
||||||
|
SortedMap<Integer, String> subMap = treeMap.subMap(2, 3);
|
||||||
|
System.out.println("键在[2,3)范围内的子映射: " + subMap); // 输出: {2=Cherry}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user