TreeSet是一种很常用的集合类型,它实现了Set和SortedSet接口,并且继承自AbstractSet抽象类。TreeSet集合中的元素也是唯一的,不允许重复。TreeSet集合的底层基于红黑树,可以使用自然排序或指定的比较器对集合中的元素进行排序。该类具有如下特点:TreeSet集合中的元素是唯一的,不允许重复。TreeSet集合中的元素是有序...
在插入过程中,如果发现有重复的元素(根据equals()方法的比较),TreeSet会忽略这个重复元素,从而实现了去重。 TreeSet是有序的。 基于EnumSet的实现: EnumSet是一种特殊的Set实现,用于表示一个枚举类型的所有可能值。 由于枚举类型的值是有限的且确定的,EnumSet在内部使用位向量来表示这些值,从而实现了高效的存储和去重。
我们知道TreeMap是一个有序的二叉树,那么同理TreeSet同样也是一个有序的,它的作用是提供有序的Set集合。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。 通过源码我们知道TreeSet基础AbstractSet,实现NavigableSet、Cloneable、Serializable接口。
import java.util.Set; /** * Set集合 * 注意HashSet与其子类LinkedHashSet的区别 * HashSet移除后再重新插入该元素不改变顺序 * LinkedHashSet则其不然,改变顺序 */ public class PracticeSet { public static void main(String[] args) { HashSet<String> set1 = new HashSet<String>(); set1.add("1...
前面提过了,TreeSet是底层是基于TreeMap存储数据的: publicclassTreeSet{publicTreeSet(){this(newTreeMap<E,Object>()); } } 构造TreeSet的时候,并没有检查参数类型必须是Comparable或者Comparator的实现类。 publicclassTreeSet{privatestaticfinalObjectPRESENT=newObject();publicbooleanadd(E e){returnm.put(e...
3. 内部实现优化:Java中的HashSet和TreeSet等Set的实现类都使用了哈希表或红黑树等数据结构,以提供高效的查找和插入操作。 多种主要用法及其代码示例 使用HashSet进行集合去重 import java.util.HashSet; import java.util.Set; public class SetExample { public static void main(String[] args) { Set<String...
List和Set是实现了Collection接口; List:有序访问、索引访问 Set(HashSet、LinkedHashSet 或者 TreeSet):去重 Map:键值存储 如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问,如果经常添加删除元素的,那...
TreeSet TreeSet () 是使用二叉树的原理对新 add () 的对象按照指定的顺序排序(升序、降序),每增加一个对象都会进行排序,将对象插入的二叉树指定的位置。 字符串和数值型对象都可以进行默认的 TreeSet 排序,而自定义类的对象是不可以的,自己定义的类必须实现 Comparable 接口,并且覆写相应的 compareTo () 函数...
本文介绍了Java TreeSet的原理,包括红黑树、TreeSet的实现、遍历方式和常用操作等内容。TreeSet是一个基于红黑树实现的有序集合,具有自动排序和去重功能。它的底层数据结构是红黑树,通过add、remove等方法实现元素的添加、删除和查找。遍历方式包括升序遍历、降序遍历和子集遍历,通过迭代器或者for-each循环实现。常用操作...
TreeSet:排序: 默认升序、不重复、无索引。 public static void main(String[] args) { // 排序、不重复、无索引 Set<Integer> sets = new TreeSet<>(); sets.add(10); sets.add(10); sets.add(20); sets.add(20); sets.add(30);