list和set的笔记

   自己也面试了很多家公司,几乎很多公司对Java基础方面都比较关注,自己被问的Java基础方面list和set方面也是比较多的。
   相信大家也都知道,Arraylist,linklist,Vector,Stack是list的实现类,以及AbstractList抽象类,它继承自AbstractCollection,以及AbstractSequentialList也是属于抽象类,它继承自Abstractlist,AbstractSequentialList实现了链表中,根据index索引值操作的链表的全部函数。
  首先先说说,arraylist:arraylist是一个数组,查询效率比较快,但是插入删除效率比较低下,当然了这个是数组的特性决定的,想对于插入和删除最好的莫过于linklist了。
  咱们再来说说linklist,想对与arraylist,linklist刚好跟arraylist相反,linklist插叙效率比较低,但是插入和删除的效率比较高,为什么插入和删除效率比较高呐?因为linklist是通过双向链表去实现的,那么什么是双向链表纳?可能有的同学会问了?首先我们要先知道,双向链表它的访问顺序会非常高效,但是随机访问效率会非常低下,所以对于插入和删除的效率比较快。
  那么Vector纳? Vsector是矢量队伍,是jdk1.0之后添加的类,继承自AbstractList,实现了list接口,所以,它是一个队列,支持相关的添加,删除,修改,便利等功能,但是和arraylist最大的不同就是,Vsector是线程安全的。
  还有就是我们压轴的大佬,stack,继承自vector,由于是stack是继承自vector,由于Vector是通过数组实现的,这就意味着,stack是通过数组实现的。(其实这个我也没研究透彻?)。
  Set和list一样也是属于Collection,属于集合的一种,和list不同的是,set内部是基于map的,所以set取值时不保证数据和存入的时候一致,也不允许为null,跟不允许重复,当然最主要的就是set的两个实现方式,一个是TreeSet,一个就是HashSet,当然两者也有分别,就是HashSet 保存的数据是无序的,Treeset保存的数据是有序的,就是因为TreeSet是二叉树实现的,hashSet是哈希表实现的,hashSet要求放入的方法必须是hashCode()方法,放入的对象是以Hashcode码作为标示的,而具有相同内容的string 。(煮鱼:如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值