关于java集合的自我总结

Java集合可以根据父接口分为两大类:

  • Iterator:

  •  
    1. 实现此接口可以用有增强for循环也就是foreach功能
    2. 实现此接口会给集合提供一个iterator()方法,该方法返回值为Iterator
      1. haseNext():判断是否存在下一项
      2. next():获取下一项
      3. remove():删除获取出来的项
      4. 注:调用remove()方法时需要先调用next()方法
    • Collection:

      • List:(可以添加重复元素)

        • Vector(不常用)
        • LinkedList(增删改快)
        • ArrayList(查询快)

      • Set:(不可用重复)

        • HashSet(都快)
        • TreeSet(拥有排序功能)
        • LinkedHashSet(有序)
      • Queue(队列:先进先出)


        Collection与Iterator的remove()方法对比
        名称CollectionIterator
        参数有参无参
        性能相对Iterator慢相对Collection快
        容错相对Iterator差相对Collection好

         

  • Map:

    • HashMap(都快)
    • TreeMap(拥有排序功能)
    • LinkedHashMap(有序)

       

 

集合的对比
名称MapSetList
是否拥有增强for循环
存储特点键值对方式存储对象存储对象存储
是否可以重复键不能重复值可以重复不能重复可以重复
是否有序无序无序有序
计算方式

使用key计算hashcode

使用成员对象计算hashcode使用成员对象计算hashcode
是否可以插入null值key只能插入一个值可以插入多个只能插入一个人可以插入多个

一、List集合中ArrayList与LinkedList的区别

ArrayListLinkedList
数组结构链表结构
查询,修改速度快增删快

原因:

  1. ArrayList查询时是直接根据下标查询而LinkedList是重头开始遍历查询的所有ArrayList查询速度比LinkedList速度快、而查询速度快那么修改也是一样

  2. LinkedList是链表结构的所有增删是不会改变原有的位置,而ArrayList增改的时候可能会改变所有的下标将数据向后或向前移动所有ArrayList慢而LinkedList快

 

二、ArrayList与Array的区别

  1. Array只能储存相同的数据类型而ArrayList能储存不同数据类型

  2. Array长度是固定的而ArrayList的长度是根据扩容因子进行扩容

 

三、HashMap的实现原理

       使用put、get方法时使用hashcode方法计算获取bucket位置,然后找寻是否已经拥有此键如果有就替换(否则就添加在bucket的位置)或者读取。

       而且HashMap会根据扩容因子进行扩容(初始化容量*%75),而且每次扩容是前一次的二倍

 

如有补充或错误请在评论区纠正谢谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值