千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

首页 视频教程 培训课程 师资团队 技术干货 常见问题 面试题 职场就业 零基础学Java 行业资讯
【热点话题】 Java技术干货 Java学习教程 Java学习笔记 Java面试题 Java培训问答 Java培训机构哪些好 Java职场就业
当前位置:Java培训  >  java技术干货  >  HashSet和TreeSet和LinkedHashSet区别

HashSet和TreeSet和LinkedHashSet区别

来源:千锋教育
发布人:qyf
时间: 2022-06-08 10:35:00 1654655700

java培训

  这个题目我们可以这样回答:

  根据场景去选择使用哪一种集合,如果你需要的是一个快速的集合,

  那么就选HashSet,如果你需要的是一个排序集合,请选择TreeSet,如果你需要一套能够存储插入顺序的集合,请使用LinkedHashSet。

  接下来咱们展开说:

  1. HashSet、LinkedHashSet、TreeSet是实现Set接口的3个实现类

  2. HashSet只是通用的存储数据的集合

  3. LinkedHashSet的主要功能用于保证FIFO(先进先出)即有序的集合

  4. TreeSet的主要功能用于排序(自然排序或者比较器排序)

  老规矩我们还是从他们相同点,不同点分别说说:

  1)HashSet、LinkedHashSet、TreeSet都实现了Set接口

  2)三者都保证了元素的唯一性,即不允许元素重复

  3)三者都不是线程安全的

  可以使用Collections.synchronizedSet()方法来保证线程安全

  不同点:

  1、排序

  HashSet不保证元素的顺序,LinkHashSet保证FIFO即按插入顺序排序,TreeSet保证元素的顺序,支持自定义排序规则。

  HashSet使用哈希表实现的,元素是无序的。添加、删除操作时间复杂度都是O(1)。TreeSet内部结构是一个树结构(红黑树),元素是有序的,添加、删除操作时间复杂度为O(log(n)),并且提供了first(), last(), headSet(), tailSet()等方法来处理有序集合。

  LinkedHashSet是介于HashSet 和 TreeSet之间,内部是一个双向链表结构,所以它的插入是有序的,时间复杂度是O(1)。

  2、null值

  HashSet,LinkedHashSet允许添加null值,TreeSet不允许添加null值,添加null时会抛出java.lang.NullPointerException异常

  3、性能

  理论情况下,添加相同数量的元素, HashSet最快,其次是LinkedHashSet,TreeSet最慢(因为内部要排序)

  4、TreeSet的俩种排序方式(我们可以给面试官讲讲自然排序跟比较排序)

  更多关于“java培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>