安徽免费网站制作,wordpress博客站点统计代码,阿里云注册域名,网站做好后还需要维护吗SortedMap、NavigableMap SortedMap获取比较器 comparator生成子视图 subMap、headMap、tailMap获取最小、最大的键 firstKey、lastKey NavigableMap获取小于、小于等于、大于、大于等于指定键的且与指定键最接近的匹配项 lowerEntry、higherEntry、ceilingEntry、floorEntry、… SortedMap、NavigableMap SortedMap获取比较器 comparator生成子视图 subMap、headMap、tailMap获取最小、最大的键 firstKey、lastKey NavigableMap获取小于、小于等于、大于、大于等于指定键的且与指定键最接近的匹配项 lowerEntry、higherEntry、ceilingEntry、floorEntry、lowerKey、higherKey、ceilingKey、floorKey删除并返回最小键、最大键关联的项 pollFirstEntry、pollLastEntry倒序视图 descendingMap、descendingKeySet生成子视图 navigableKeySet、subMap、headMap、tailMap 视图视图的底层由原 map 支持所有对视图的修改会反映到原 map 上反之依然。 SortedMap
获取比较器 comparator
Comparator? super K comparator();返回用于决定 key 顺序的 Comparator如果构造方法未指定 Comparator即使用自然顺序key 实现了 Comparable 接口则返回 null。
public static void main(String[] args) {// 自然顺序Integer 实现了 Comparable 接口SortedMapInteger, Integer treeMap1 new TreeMap();System.out.println(treeMap1.comparator());// 指定了 ComparatorSortedMapInteger, Integer treeMap2 new TreeMap(Comparator.IntegernaturalOrder().reversed());System.out.println(treeMap2.comparator());
}null
java.util.Collections$ReverseComparator2f0e140b生成子视图 subMap、headMap、tailMap
SortedMapK,V subMap(K fromKey, K toKey);返回 key 范围为 [fromKey, toKey) 的左闭右开的子视图。如果尝试插入 [fromKey, toKey) 范围外的 key会抛异常 IllegalArgumentException。
SortedMapK,V headMap(K toKey);返回 key 范围为 (-∞, toKey) 的子视图严格小于 toKey其他与 subMap 方法相同
SortedMapK,V tailMap(K fromKey);返回 key 范围为 [fromKey, ∞) 的子视图大于等于 fromKey其他与 subMap 方法相同
public static void main(String[] args) {SortedMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);// 左闭右开SortedMapInteger, Integer subMap treeMap.subMap(3, 7);System.out.println(subMap: subMap);// 删除范围外的不起作用不会抛异常subMap.remove(1);System.out.println();System.out.println(删除范围外的不起作用不会抛异常);System.out.println(treeMap: treeMap);System.out.println(subMap: subMap);subMap.remove(3);System.out.println();System.out.println(treeMap: treeMap);System.out.println(subMap: subMap);subMap.put(4, 4);System.out.println();System.out.println(treeMap: treeMap);System.out.println(subMap: subMap);// 插入范围外的会抛异常subMap.put(7, 7);
}treeMap: {11, 33, 55, 77, 99}
subMap: {33, 55}删除范围外的不起作用不会抛异常
treeMap: {11, 33, 55, 77, 99}
subMap: {33, 55}treeMap: {11, 55, 77, 99}
subMap: {55}treeMap: {11, 44, 55, 77, 99}
subMap: {44, 55}
Exception in thread main java.lang.IllegalArgumentException: key out of rangeat java.util.TreeMap$NavigableSubMap.put(TreeMap.java:1516)at com.example.jdk8.map.T2.main(T2.java:37)
获取最小、最大的键 firstKey、lastKey
// 获取最小第一个的键
K firstKey()// 获取最大最后一个的键
K lastKey();public static void main(String[] args) {SortedMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);System.out.println(firstKey: treeMap.firstKey());System.out.println(lastKey: treeMap.lastKey());
}treeMap: {11, 33, 55, 77, 99}
firstKey: 1
lastKey: 9NavigableMap
NavigableMap 继承了 SortedMap
public interface NavigableMapK,V extends SortedMapK,V获取小于、小于等于、大于、大于等于指定键的且与指定键最接近的匹配项 lowerEntry、higherEntry、ceilingEntry、floorEntry、lowerKey、higherKey、ceilingKey、floorKey
获取符合条件且与指定键最接近的匹配项没有则返回 null。换句话说就是获取符合条件的第一个匹配项。
// 返回 Entry
// 返回第一个小于 key 的 Entry
Map.EntryK,V lowerEntry(K key);
// 大于
Map.EntryK,V higherEntry(K key);
// 小于等于
Map.EntryK,V floorEntry(K key);
// 大于等于
Map.EntryK,V ceilingEntry(K key);// 只返回 key
// 小于
K lowerKey(K key);
// 大于
K higherKey(K key);
// 小于等于
K floorKey(K key);
// 大于等于
K ceilingKey(K key);public static void main(String[] args) {NavigableMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);System.out.println(lowerEntry(5): treeMap.lowerEntry(5));System.out.println(lowerKey(5): treeMap.lowerKey(5));System.out.println(higherEntry(5): treeMap.higherEntry(5));System.out.println(higherKey(5): treeMap.higherKey(5));System.out.println(floorEntry(5): treeMap.floorEntry(5));System.out.println(floorKey(5): treeMap.floorKey(5));System.out.println(floorEntry(4): treeMap.floorEntry(4));System.out.println(floorKey(4): treeMap.floorKey(4));System.out.println(ceilingEntry(5): treeMap.ceilingEntry(5));System.out.println(ceilingKey(5): treeMap.ceilingKey(5));System.out.println(ceilingEntry(6): treeMap.ceilingEntry(6));System.out.println(ceilingKey(6): treeMap.ceilingKey(6));
}treeMap: {11, 33, 55, 77, 99}
lowerEntry(5): 33
lowerKey(5): 3
higherEntry(5): 77
higherKey(5): 7
floorEntry(5): 55
floorKey(5): 5
floorEntry(4): 33
floorKey(4): 3
ceilingEntry(5): 55
ceilingKey(5): 5
ceilingEntry(6): 77
ceilingKey(6): 7删除并返回最小键、最大键关联的项 pollFirstEntry、pollLastEntry
// 删除并返回最小键关联的项
Map.EntryK,V pollFirstEntry();
// 删除并返回最大键关联的项
Map.EntryK,V pollLastEntry();public static void main(String[] args) {NavigableMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);System.out.println(pollFirstEntry(): treeMap.pollFirstEntry());System.out.println(treeMap: treeMap);System.out.println(pollLastEntry(): treeMap.pollLastEntry());System.out.println(treeMap: treeMap);
}treeMap: {11, 33, 55, 77, 99}
pollFirstEntry(): 11
treeMap: {33, 55, 77, 99}
pollLastEntry(): 99
treeMap: {33, 55, 77}倒序视图 descendingMap、descendingKeySet
// 返回与原 map 顺序相反的 NavigableMap
NavigableMapK,V descendingMap();
// 返回与原 map 顺序相反的 NavigableSet
NavigableSetK descendingKeySet();public static void main(String[] args) {NavigableMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);NavigableMapInteger, Integer descendingMap treeMap.descendingMap();System.out.println(descendingMap: descendingMap);NavigableSetInteger descendingKeySet treeMap.descendingKeySet();System.out.println(descendingKeySet: descendingKeySet);
}treeMap: {11, 33, 55, 77, 99}
descendingMap: {99, 77, 55, 33, 11}
descendingKeySet: [9, 7, 5, 3, 1]生成子视图 navigableKeySet、subMap、headMap、tailMap
// 返回只包含 key 的视图
NavigableSetK navigableKeySet();
// 与 SortedMap 的 subMap、headMap、tailMap 相似只是添加了 fromInclusive、toInclusive 用于控制是否包含边界
NavigableMapK,V subMap(K fromKey, boolean fromInclusive,K toKey, boolean toInclusive);NavigableMapK,V headMap(K toKey, boolean inclusive);NavigableMapK,V tailMap(K fromKey, boolean inclusive);public static void main(String[] args) {NavigableMapInteger, Integer treeMap new TreeMap();treeMap.put(1, 1);treeMap.put(3, 3);treeMap.put(5, 5);treeMap.put(7, 7);treeMap.put(9, 9);System.out.println(treeMap: treeMap);NavigableSetInteger navigableKeySet treeMap.navigableKeySet();System.out.println(navigableKeySet: navigableKeySet);System.out.println(subMap(3, true, 7, true): treeMap.subMap(3, true, 7, true));System.out.println(subMap(3, false, 7, false): treeMap.subMap(3, false, 7, false));System.out.println(headMap(3, true): treeMap.headMap(3, true));System.out.println(headMap(3, false): treeMap.headMap(3, false));System.out.println(tailMap(7, true): treeMap.tailMap(7, true));System.out.println(tailMap(7, false): treeMap.tailMap(7, false));
}treeMap: {11, 33, 55, 77, 99}
navigableKeySet: [1, 3, 5, 7, 9]
subMap(3, true, 7, true): {33, 55, 77}
subMap(3, false, 7, false): {55}
headMap(3, true): {11, 33}
headMap(3, false): {11}
tailMap(7, true): {77, 99}
tailMap(7, false): {99}