容器类整理

容器类分为两种,collection和map,collection接口又分两个子类型,list和set以及list,set,map等一些具体实现类

链表和数组区分:

        物理结构:链表与数组都属于线性表,从物理结构上来讲,链表属于链式存储结构,称为链表,数组属于顺序存储结构,称为数组,由于两种结构不同,所以数组是逻辑相邻物理也是相邻的,而链表则是逻辑项链但是物理不要求相邻,所以链表一般有两种存储域,一种是存储数据本身的数据域,一种是存储指向下一元素位置的指针域,最后一条数据没有下一个指针则为null;

        元素的存取方式不同:存取的话数组可以直接通过元素索引确定位置进行存取,但是链表则需要遍历才能确定位置,所以数组顺序更快;

        元素的插入和删除方式不同:插入和删除对于数组来说处理起来的方式是需要移动数组元素位置,以保证数组元素的排序,对于链表来说插入和删除不需要保证数组元素顺序,但是删除过程中需要遍历,所以基本上两者速度基本上一致

list:list是由collection扩展出来的一个接口,它是一个允许重复的有序集合,以下是介绍一下常用的三种list实现类;

        1.ArrayList:ArrayList是由数组作为底层的一种实现类,这个数组是可以动态创建的,在底层代码中ArrayList是初始定义一个数组长度,当添加时list长度超过数组长度,则新创建一个更大的数组,然后将原来的数组数据全部复制到新数组中,Vector与ArrayList基本一致,但是vector是线程安全的;

        2.LinkedList:LinkedList是由链表作为底层的实现类,根据上述的数组和链表的区别来说,所以LinkedList与ArrayList最大的区分就是ArrayList存取速度更快,而插入和删除理应来说两者速度应该相同,但是由于ArrayList有一个动态创建数组的动作,需要判断数组长度,所以插入删除LinkedList更快;

set:set是由collection扩展出来的一个接口,它是一个不允许重复的无序集合,以下是介绍一下常用的三种set实现类,散列集HashSet,链式散列集LinkedHashSet,树形散列集TreeSet

        1.HashSet:是实现set的一个具体类,无序,不可重复;

        2.LinkedHashSet:LinkedHashSet是由一个链表实现扩展的HashSet类,它支持有序,可以按照插入的顺序进行排序

        3.TreeSet:TreeSet是一个有序的set,它的底层是一个树形结构,这样可以给TreeSet进行一个有序的排序,并且TreeSet可以根据值的大小进行排序,并不是按照插入顺序进行排序;

map:常用的map实现类有HashMap,LinkedHashMap,TreeMap,LinkedHashMap也是通过链表拓展成有序集合,TreeMap也是通过红黑树结构对值进行一个排序

        1.HashMap:采用数组+链表实现,在1.8之后,当链表长度超过阀值(8)的时候,HashMap会转成数组+链表+红黑树的结构从而大大提高效率,HashMap特点是无序,key值不可以重复,ConcurrentHashMapHashTable都是线程安全的,但是从效率上来说ConcurrentHashMap比HashMap效率要高;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值