1.2. TreeSet 的定义 TreeSet 是Java 集合框架中的一种有序集合,它实现了 Set 接口,因此具有不允许重复元素的特性。与 HashSet 不同,TreeSet 使用红黑树数据结构来存储元素,这使得元素在集合中保持有序。 这里需要理解两个主要特性: 有序性(Order):TreeSet 中的元素按照自然排序(元素的自然顺序)或者指定的排序...
importjava.util.TreeSet;importjava.util.Comparator;publicclassTreeSetCustomComparator{publicstaticvoidmain(String[]args){// 创建一个TreeSet对象,按照降序排序TreeSet<Integer>set=newTreeSet<>(Comparator.reverseOrder());// 向TreeSet中添加元素set.add(10);set.add(20);set.add(30);set.add(10);// ...
/** * 无参构造方法 */ TreeSet<Integer> treeSet1 = new TreeSet<>(); /** * 有参构造方法,传入排序方式,默认升序,这里传入倒序 */ TreeSet<Integer> treeSet2 = new TreeSet<>(Collections.reverseOrder()); 再看一下构造方法的源码实现: TreeSet(NavigableMap<E,Object> m) { this.m = m; ...
另一种方法是使用TreeSet,并传入自定义的Comparator来实现倒序排列。TreeSet是有序集合,它会根据元素的自然顺序或Comparator来进行排序。下面是具体的代码示例: importjava.util.*;publicclassSetReverseDemo{publicstaticvoidmain(String[]args){Set<Integer>set=newTreeSet<>(Comparator.reverseOrder());set.add(3);...
TreeSet<Integer> set = new TreeSet<>(); set.add(5); set.add(2); set.add(8); System.out.println(set); // 输出:[2, 5, 8] 复制代码 使用Comparator对象定义元素的排序顺序: TreeSet<String> set = new TreeSet<>(Comparator.reverseOrder()); set.add("apple"); set.add("banana");...
是一个有序集合,缺省是按照自然顺序进行升序排序,意味着TreeSet中元素要实现Comparable接口;也可以构造TreeSet对象时,传递实现了Comparator接口的比较器对象。此类不允许使用 null 元素,底层结构是TreeMap,非线程安全。 4)EnumSet 继承自AbstractSet,是专为枚举类设计的集合类,其中存放的所有元素必须是指定枚举类型的枚举...
TreeSet() 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。 TreeSet(Collection extendsE> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 TreeSet(Comparator superE> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。
TreeSet是基于TreeMap作为存储的可排序、可去重的有序集合 继承于AbstractSet,AbstractSet实现了equals和hashcode方法 实现了NavigableSet接口,意味着它支持一系列的导航方法,比如查找与指定目标最匹配项 实现了Cloneable接口,意味着它能被复制 实现了java.io.Serializable接口,意味着它支持序列化 ...
HashSet是最基础的Set集合,可以去除重复元素,元素存储是无序的。 LinkedHashSet在HashSet功能基础上,增加了按照元素插入顺序或者访问顺序的迭代方式。 TreeSet在HashSet功能基础上,可以保证按照元素大小顺序排列。 底层实现 HashSet是基于HashMap实现的,使用组合的方式,并非继承。
TreeSet<String> ts=newTreeSet<String>(Collections.reverseOrder(newStrLencom())); ts.add("cccccc"); ts.add("dddd"); ts.add("a"); ts.add("hh"); System.out.println(ts); } }classStrLencomimplementsComparator<String>{ @Overridepublicintcompare(String s1, String s2) {intnum=newInteger...