Java集合介绍,Collection和Map

Java集合

集合类型有三种,set,list还有map
集合接口有两种,Collection和Map,list和set继承了Collection接口
List:
可以重复,可以含有null元素,通过索引取出加入数据,读取顺序和插入顺序一致

  1. ArrayList:底层数据结构是数据结构array,查询速度快,增删改慢,因为是一种类似数组的形式进行存储,所以随机访问速度快。
  2. Vector:底层是数组结构array,与ArrayList相同,查询速度快,增删改慢。
  3. LinkedList:底层使用链表结构,增删速度快,查询稍慢。
    ArrayList和Vector区别:
    Vector的扩容是按照当前数组的百分之百扩容,ArrayList则是百分之五十。
    ArrayList是线程不同步,Vector线程安全,但因为Vector每个方法都加上了synchronized,所以效率上小于ArrayList。
    Set:
    数据无序且唯一,实现类都不是线程安全的类。
    解决线程安全的办法Set set = Collecitions.sysnchronizedSet(Set对象)
    HashSet:是Set接口最常用的实现类,顾名思义,底层用了哈希表算法,底层其实是一个数组,存在的意义是提供查询速度,插入速度也快,但是仅适合少量数据的插入,判断两个对象是否相同的规则:equals比较为true,hashCode值相同。
    LinkedHashSet:继承了HashSet类,所以它的底层用的也是哈希表的数据结构,因为保持数据的先后添加顺序,所以又加了链表结构,但因为多加了一种数据结构,所以效率比较低,如果要求一个集合要保证元素不重复,需要记录元素的先后添加顺序,才选择LinkedHashSet。
    TreeSet:Set接口的实现类,也拥有set接口的一般特性,但是不同的是它也实现了SortSet接口,底层采用了红黑树算法,它只能存储相同类型对象的引用。
    Tree最重要的是它的两种排序方式:自然排序和客户化排序
    自然排序:实现了Comparable接口,所以TreeSet可以调用对象的ComparableTo()方法比较集合大小,然后进行升序排序。
    客户化排序:其实是实现Comparator接口提供的具体排序方式,是具体比较对象的类型,如果comparator(x,y)返回值大于0表示x大于y。
    Map:
    Java中Map是一种把键对象和值对象进行映射的集合,其中每一个元素都包含了键对象和值对象,其中值对象可以是Map类型的数据,因此Map支持多级映射,Map中的键是唯一的,但是值可以不唯一。
    HashMap:1.8版本后,哈希表的实现是数组+链表+红黑树,在使用哈希表的集合中,我们都认为他们的时间复杂度都是O(1)的。
    TreeMap:它是一个有序的key-value集合,它是通过红黑树实现的,TreeMap继承于AbstractMap,所哟一它是一个Map,它支持导航方法,能被克隆,也支持序列化。
    HashTable:继承了Map接口,实现了一个key-value映射的哈希表,任何非空对象都可以作为key和value,线程安全。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值