From 28a8ff0ec4209992cebd0d3376c2c06ddbd399d5 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 3 Feb 2026 14:04:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E9=98=B6day04-=E5=85=B7=E6=9C=89?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=8A=9F=E8=83=BD=E7=9A=84=E5=8F=8C=E5=88=97?= =?UTF-8?q?=E9=9B=86=E5=90=88TreeMap=E7=9A=84=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/map01/TreeMapDemo08.java | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java diff --git a/javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java b/javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java new file mode 100644 index 0000000..8a51c10 --- /dev/null +++ b/javaSE-day04/src/com/inmind/map01/TreeMapDemo08.java @@ -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 treeMap = new TreeMap<>(); + + // 2. 创建TreeMap(指定比较器,如按键降序排序) + TreeMap 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 keys = treeMap.keySet(); + System.out.println("所有键: " + keys); // 输出: [2, 3] + + // 11. 获取所有值的集合(values()) + Collection values = treeMap.values(); + System.out.println("所有值: " + values); // 输出: [Cherry, Apricot] + + // 12. 获取所有键值对(entrySet()) + Set> entries = treeMap.entrySet(); + System.out.println("所有键值对: " + entries); + // 输出: [2=Cherry, 3=Apricot] + + System.out.println("----------------------TreeMap独有的排序功能---------------------------"); + + + // 13. 获取第一个键值对(firstEntry()) + Map.Entry firstEntry = treeMap.firstEntry(); + System.out.println("第一个键值对: " + firstEntry); // 输出: 2=Cherry + + // 14. 获取最后一个键值对(lastEntry()) + Map.Entry 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 floorEntry = treeMap.floorEntry(3); + System.out.println("小于等于3的最大键值对: " + floorEntry); // 输出: 3=Apricot + + // 18. 获取大于等于指定键的最小键值对(ceilingEntry()) + Map.Entry ceilingEntry = treeMap.ceilingEntry(2); + System.out.println("大于等于2的最小键值对: " + ceilingEntry); // 输出: 2=Cherry + + // 19. 截取子映射(headMap():键小于指定值) + SortedMap headMap = treeMap.headMap(3); + System.out.println("键小于3的子映射: " + headMap); // 输出: {2=Cherry} + + // 20. 截取子映射(tailMap():键大于等于指定值) + SortedMap tailMap = treeMap.tailMap(2); + System.out.println("键大于等于2的子映射: " + tailMap); // 输出: {2=Cherry, 3=Apricot} + + // 21. 截取子映射(subMap():键在[fromKey, toKey)范围内) + SortedMap subMap = treeMap.subMap(2, 3); + System.out.println("键在[2,3)范围内的子映射: " + subMap); // 输出: {2=Cherry} + + } +}