TreeSet 的层次结构
TreeSet 类扩展了 AbstractSet类并实现了 NavigableSet接口。
NavigableSet 接口以分层顺序扩展了 SortedSet。
class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable
{
//implementation
}
TreeSet的方法
- boolean add(E e) :如果尚未存在,则将指定的元素添加到 Set 中。
- Comparator Comparator() :返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的自然顺序,则返回 null。
- Object first() :返回此集合中当前的第一个(最低)元素。
- Object last() :返回此集合中当前的最后一个(最大)元素。
- void clear() :从 TreeSet 中删除所有元素。
- boolean contains(Object o) :如果 TreeSet 包含指定元素,则返回
true,否则返回false。 - boolean isEmpty() : 如果 TreeSet 不包含元素,则返回
true,否则返回false。 - int size() :返回 TreeSet 中元素的数量。
- Iterator<E> iterator() :以升序返回此集合中元素的迭代器。
- Iterator<E>DescingIterator() :以降序返回此集合中元素的迭代器。
- NavigableSet<E>DescingSet() :返回此集合中包含的元素的逆序视图。
- boolean remove(Object o) :如果指定的元素存在,则从 TreeSet 中移除指定的元素并返回
true,否则返回false。 - Object clone() :返回 TreeSet 的浅拷贝。
- Spliterator<E> spliterator() :在此 TreeSet 中的元素上创建一个后期绑定和快速失败的 Spliterator。它与 treeset 提供的顺序相同。
TreeSet的特性
- 它扩展了
AbstractSet类,该类扩展了AbstractCollection类。 - 它实现了扩展了 SortedSet 接口的 NavigableSet 接口。
- TreeSet 中不允许出现重复值。
- TreeSet 中不允许为 NULL。
- 它是一个有序集合,按排序顺序存储元素。
- 与 HashSet 一样,此类为基本操作(添加、删除、包含和大小)提供恒定的时间性能。
- TreeSet 不允许插入异构对象,因为它必须比较对象以确定排序顺序。
- TreeSet 不同步。
如果多个线程同时访问一个散列集,并且至少有一个线程修改了该集,则必须在外部进行同步。
- 使用 Collections.synchronizedSortedSet(new TreeSet()) 方法获取同步的 TreeSet。
- 此类的迭代器方法返回的迭代器是快速失败的,如果在创建迭代器后的任何时间修改了集合,则可能会抛出“ConcurrentModificationException”,除非通过迭代器自己的“remove()”方法。
- TreeSet 还实现了 Searlizable 和 Cloneable 接口。
Java TreeSet 类扩展了 AbstractSet 并实现了 NavigableSet 接口。
它与 HashSet 类非常相似,不同之处在于它按排序顺序存储元素。
on
it
road
.com
TreeSet 的构造函数
TreeSet 有四个可能的构造函数:
- TreeSet():创建一个新的空树集,根据其元素的自然顺序进行排序。
- TreeSet(Comparator c):创建一个新的空树集,根据指定的比较器进行排序。
- TreeSet(SortedSet s):创建一个新的树集,包含与指定的有序集相同的元素并使用相同的顺序。
- TreeSet(Collection c):创建一个包含指定集合中元素的新树集,根据其元素的自然顺序进行排序。
TreeSet示例
TreeSet 添加元素、删除元素、迭代TreeSet示例
//1. 创建 TreeSet
TreeSet<String> TreeSet = new TreeSet<>();
//2. 添加元素到TreeSet
TreeSet.add("A");
TreeSet.add("B");
TreeSet.add("C");
TreeSet.add("D");
TreeSet.add("E");
System.out.println(TreeSet);
//3. 检查TreeSet中是否包含某个元素
boolean found = TreeSet.contains("A"); //true
System.out.println(found);
//4. 从TreeSet中删除元素
TreeSet.remove("D");
//5. 迭代TreeSet
Iterator<String> itr = TreeSet.iterator();
while(itr.hasNext())
{
String value = itr.next();
System.out.println("Value: " + value);
}
输出:
[A, B, C, D, E] true Value: A Value: B Value: C Value: E
Java 将 TreeSet 转换为数组示例
使用 toArrray() 方法将 TreeSet 转换为数组的 Java 示例。
TreeSet<String> TreeSet = new TreeSet<>();
TreeSet.add("A");
TreeSet.add("B");
TreeSet.add("C");
TreeSet.add("D");
TreeSet.add("E");
String[] values = new String[TreeSet.size()];
TreeSet.toArray(values);
System.out.println(Arrays.toString(values));
输出:
[A, B, C, D, E]
Java 将 TreeSet 转换为 ArrayList 示例
使用 Java 8 流 API 将 TreeSet 转换为 arraylist 的 Java 示例。
TreeSet<String> TreeSet = new TreeSet<>();
TreeSet.add("A");
TreeSet.add("B");
TreeSet.add("C");
TreeSet.add("D");
TreeSet.add("E");
List<String> valuesList = TreeSet.stream().collect(Collectors.toList());
System.out.println(valuesList);
输出:
[A, B, C, D, E]
日期:2020-09-17 00:09:49 来源:oir作者:oir
