JAVA集合简单介绍


集合大纲

JAVA集合类主要由两个根接口Collection和Map派生出来的。

1. 常用集合分类

Collection接口 对应的对象集合

  • List接口:元素有序保存,可以存储重复元素
    • LinkedList 接口实现类:链表类型,查询慢,增删快,没有同步,线程不安全,效率高
    • ArrayList 接口实现类:数组类型,查询快,增删慢,没有同步,线程不安全,效率高
    • Vector 接口实现类:数组类型,查询快,增删慢,同步,线程安全,效率低
      • Stack 是Vector类的实现类
  • Set 接口:仅接收一次,不可重复,并在内部排序
    • HashSet 使用hash表(数组)存储元素
      • LinkedHashSet 链表维护元素的插入次序
    • TreeSet 底层实现为二叉树,元素为排好序的

Map 接口 key-value 结合

  • Hashtable 接口实现类:同步,线程安全
  • HashMap 接口实现类,没有同步,线程不安全
    • LinkedHashMap 双向链表和哈希表实现
    • WeakHashMap
  • TreeMap 红黑树对所有的key进行排序
  • IdentifyHashMap

List 和 Set比较

Collection 工具类

如何选择集合

6.1 List

  1. 随机查询或者迭代遍历操作,数组比容器速度快。所以随机访问一般采用ArrayList。
  2. LinkedList 使用双向链表对元素进行增加和删除操作提供了很好的支持,而ArrayList执行增删操作需要对元素进行移位。
  3. 对于Vector,我们一般避免使用,效率低。
  4. 将ArrayList作为首选,毕竟对于集合元素我们都是进行遍历,只有当程序性能因为List的频繁插入和删除而降低时,我们采用LinkedList。

6.2 Set

  1. HashSet由于使用HashCode实现,所以在某种程度上来说他的性能永远比TreeSet要好,尤其是进行增加和查找操作。
  2. 虽然TreeSet并没有HashSet性能好,但是它可以维护元素的排序。

6.3 Map

  1. HashMap 与HashSet 同样,支持快速查询。虽然HashTable速度也不慢,但是跟HashMap相比还有略微差,所以HashMap在查询方面可以取代HashTable。
  2. 由于TreeMap需要维护元素内部的顺序,所以它通常要比HashMap和HashTable速度慢。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值