HashSet和TreeSet是Set的两个典型实现,到底如何选择HashSet和TreeSet呢?HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet小额外的红黑树算法来维护集合元素的次数。只有当需要一个保持排序的Set时,才应该用TreeSet,否则都应该使用HashSet。

  HashSet还有一个子类:LinkedHashSet,对于普通的插入、删除操作,LinkedHashSet比HashSet要略微慢一点,这是由维护链表所带来的额外开销造成的,但是由于有了链表,遍历LinkedHashSet会更快。

  EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素

  必须指出的是,Set的三个实现类都是线程不安全的,如果有多个线程同时访问一个Set集合,并且有超过一个线程修改了该Set集合,则必须手动保证Set集合的同步性。通常可以通过Collections工具类的synchoronizedSortedSet方法来“包装”该Set集合。

相关文章:

  • 2021-12-10
  • 2021-10-13
  • 2021-08-06
  • 2022-12-23
  • 2021-12-06
  • 2021-12-27
猜你喜欢
  • 2022-12-23
  • 2022-02-15
  • 2021-04-12
  • 2021-11-17
  • 2021-12-24
  • 2022-12-23
  • 2021-04-22
相关资源
相似解决方案