1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| public class TreeMapNavigableExample {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
// 添加測試數據
treeMap.put(1, "One");
treeMap.put(3, "Three");
treeMap.put(5, "Five");
treeMap.put(7, "Seven");
treeMap.put(9, "Nine");
demonstrateNavigableMethods(treeMap);
}
private static void demonstrateNavigableMethods(TreeMap<Integer, String> map) {
System.out.println("Original map: " + map);
// Lower 方法:返回嚴格小於指定鍵的最大鍵
Map.Entry<Integer, String> lowerEntry = map.lowerEntry(5);
System.out.println("Lower entry (< 5): " + lowerEntry); // 3=Three
Integer lowerKey = map.lowerKey(5);
System.out.println("Lower key (< 5): " + lowerKey); // 3
// Floor 方法:返回小於或等於指定鍵的最大鍵
Map.Entry<Integer, String> floorEntry = map.floorEntry(4);
System.out.println("Floor entry (<= 4): " + floorEntry); // 3=Three
Map.Entry<Integer, String> floorEntry2 = map.floorEntry(5);
System.out.println("Floor entry (<= 5): " + floorEntry2); // 5=Five
// Ceiling 方法:返回大於或等於指定鍵的最小鍵
Map.Entry<Integer, String> ceilingEntry = map.ceilingEntry(4);
System.out.println("Ceiling entry (>= 4): " + ceilingEntry); // 5=Five
Map.Entry<Integer, String> ceilingEntry2 = map.ceilingEntry(5);
System.out.println("Ceiling entry (>= 5): " + ceilingEntry2); // 5=Five
// Higher 方法:返回嚴格大於指定鍵的最小鍵
Map.Entry<Integer, String> higherEntry = map.higherEntry(5);
System.out.println("Higher entry (> 5): " + higherEntry); // 7=Seven
// 首尾條目
Map.Entry<Integer, String> firstEntry = map.firstEntry();
Map.Entry<Integer, String> lastEntry = map.lastEntry();
System.out.println("First entry: " + firstEntry); // 1=One
System.out.println("Last entry: " + lastEntry); // 9=Nine
// 彈出首尾條目(會刪除元素)
TreeMap<Integer, String> copyMap = new TreeMap<>(map);
Map.Entry<Integer, String> pollFirst = copyMap.pollFirstEntry();
Map.Entry<Integer, String> pollLast = copyMap.pollLastEntry();
System.out.println("Poll first: " + pollFirst); // 1=One
System.out.println("Poll last: " + pollLast); // 9=Nine
System.out.println("After polling: " + copyMap); // {3=Three, 5=Five, 7=Seven}
// 降序視圖
NavigableMap<Integer, String> descendingMap = map.descendingMap();
System.out.println("Descending map: " + descendingMap);
// 導航鍵集合
NavigableSet<Integer> navigableKeySet = map.navigableKeySet();
NavigableSet<Integer> descendingKeySet = map.descendingKeySet();
System.out.println("Navigable key set: " + navigableKeySet);
System.out.println("Descending key set: " + descendingKeySet);
// 範圍視圖
NavigableMap<Integer, String> rangeMap = map.subMap(3, true, 7, false);
System.out.println("Range [3, 7): " + rangeMap); // {3=Three, 5=Five}
NavigableMap<Integer, String> headMap = map.headMap(5, true);
System.out.println("Head map (<= 5): " + headMap); // {1=One, 3=Three, 5=Five}
NavigableMap<Integer, String> tailMap = map.tailMap(5, false);
System.out.println("Tail map (> 5): " + tailMap); // {7=Seven, 9=Nine}
}
}
|
留言討論