进阶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