Java集合类之间的对比

一、常用集合类对比和说明

集合类型主要有3种:set、list和map。

  • ArrayList、LinkedList、Vector
    ArrayList:

    底层使用数组实现,遍历和追加元素速度快,中间插入和删除元素慢,线程不安全。

LinkedList:
采用双向链表实现(双向链表:每个元素中除了有数据以外,还需要存放上一个和下一个元素的引用),元素在空间中不连接,遍历慢,中间插入和删除速度快。

Vector:
集合的遗留类(Legacy)。底层也是使用数组实现,遍历和追加元素速度快,中间插入和删除元素,线程安全。.Vector是List集合中比较早期的实现,现在基本不用。

  • HashMap 和 HashTable

HashMap:
HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。HashMap采用数组+链表实现,线程不安全。

HashTable:
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value,线程安全。

  • HashSet 和 TreeSet

HashSet
HashSet简单的理解就是HashSet对象中不能存储相同的数据,存储数据时是无序的。但是HashSet存储元素的顺序并不是按照存入时的顺序(和List显然不同) 是按照哈希值来存的所以取数据也是按照哈希值取得

TreeSet
是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类,实现了NavigableSet,Cloneable,Serializable接口。TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值