NavigableSet扩展SortedSet,提供更灵活的有序集合操作。它支持lower、floor、ceiling、higher等定位方法,以及pollFirst、pollLast获取并移除极值,descendingSet返回逆序视图,subSet可定制范围查询。常用实现类为TreeSet,适用于需精确排序与区间检索的场景,元素需实现Comparable或传入Comparator。示例中添加5、10、15、20后,lower(15)得10,floor(15)得15,ceiling(16)得20,higher(10)得15,pollFirst移除5,pollLast移除20,最终集合剩[10, 15];descendingSet输出[15, 10],subSet(10, true, 15, true)得[10, 15]。掌握其顺序控制与范围操作是关键。
Java中的NavigableSet接口是SortedSet的扩展,提供了一系列更灵活的方法来搜索、定位和遍历有序集合中的元素。它常用于需要精确控制排序顺序和范围查询的场景。最常用的实现类是TreeSet。
NavigableSet在保持元素自然排序或自定义比较器排序的基础上,支持以下操作:
使用TreeSet作为实现类:
NavigableSetset = new TreeSet<>(); set.add(10); set.add(20); set.add(5); set.add(15); System.out.println(set); // 输出: [5, 10, 15, 20]
演示几个关键方法的实际用法:
System.out.println(set.lower(15)); // 10 System.out.println(set.floor(15)); // 15 System.out.println(set.ceiling(16)); // 20 System.out.println(set.higher(10)); // 15 System.out.println(set.pollFirst()); // 5,同时从集合中移除 System.out.println(set.pollLast()); // 20 System.out.println(set); // [10, 15]
可以方便地获取逆序集合或部分区间:
NavigableSetdescending = set.descendingSet(); System.out.println(descending); // [15, 10] // 获取[10, 15]之间的元素,包含边界 SortedSet range = set.subSet(10, true, 15, true); System.out.println(range); // [10, 15]
基本上就这些。掌握NavigableSet的关键在于理解其定位方法和顺序控制能力,特别适合处理有序数据的查找和区间操作。实际使用中注意元素类型必须可比较,否则需提供Comparator。