1、TreeSet
- TressSet是一个基于Tree Map的Navigable Set实现。这些元素使用它们自然排序或者在创建的时提供Comparator进行排序,具体取决于使用的构造函数。此实现为基本操作add、remove和contains提供了log(n)的时间成本。
- 这个实现不是线程安全的,如果多线程并发访问了TreeSet,并且至少一个线程修改了set,必须进行外部加锁,或者使用Sorted Set s =Collections.synchronizedSortedSet(new TreeSet(...))。
- 这个实现持有fail-fast机制。
2、LinkedHashSet类
LinkedHashSet类继承于Set,LinkedHashSet类的继承体系:
- LinkedHashSet是Set接口的Hash表和LinkedList的实现,这个实现不同于Hash Set的是它维护着一个贯穿所有条目的双向链表。此链表定义了元素插入集合的顺序。注意:如果元素重新插入,则插入顺序不会受到影响。
- LinkedHashSet有两个影响其构成的参数:初始容量和加载因子。它们的定义于Hash Set完全相同。但是对于LinkedHashSet,选择过高的初始容量值的开销要比Hash Set小,因为LinkedHashSet的迭代次数不受容量影响。
- LinkedHashSet也不是线程安全的,如果多线程同时访问LinkedHashSet,必须加锁,或者通过使用Collections.synchronizedSet。该类也支持fail-fast机制。