关与ArrayXxx、LinkedXxx、HashXxx、TreeXxx的论述

对于集合的一般情况都如下所示:

  • ArrayXxx:底层数据结构是数组,查询快,增删慢
  • LinkedXxx:底层数据结构是链表,查询慢,增删快
  • HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
  • TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

例如:

ArrayList和LinkedList区别:

  • ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或删除对象的速度较慢

  • LinkedList类采用链表结构保存对象。这种结构的优点便是便于向集合中插入和删除对象。需要向集合中插入和删除对象时,使用LinkedList类实现的List集合的效率较高;但是对于随机访问集合中的元素,使用LinkedList类实现List集合的效率较低

HashMap和Hashtable区别:

  • Hashtable是一个线程安全的map实现,但HashMap是线程不安全的实现,故HashMap的性能较高

  • Hashtable不允许使用null作为key和value,如果试图将null放入Hashtable,会报NullPointException异常;但HashMap可放入null作为key或value

HashMap和TreeMap区别:

  • HashMap类是基于哈希表的Map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和null键但是必须保证键的唯一性。HashMap通过哈希表对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是它不保证该顺序恒久不变

  • TreeMap类不仅实现了Map接口还实现了java.util.SortedMap接口,因此,集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap比HashMap类性能差。由于TreeMap实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象时null

  • 总的来说,建议使用HashMap实现Map集合,因为HashMap实现Map集合添加和删除映射关系的效率更高。如果希望Map集合中的对象也存在一定的顺序的话就使用TreeMap实现Map集合

HashSet和reeSet区别:

  • HashSet类实现Set接口,由哈希表支持。它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null元素

  • TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口(注意Collection位于java.lang.Object包),因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值