关于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()方法对比
        名称 Collection Iterator
        参数 有参 无参
        性能 相对Iterator慢 相对Collection快
        容错 相对Iterator差 相对Collection好

  • Map:

    • HashMap(都快)
    • TreeMap(拥有排序功能)
    • LinkedHashMap(有序)
集合的对比
名称 Map Set List
是否拥有增强for循环
存储特点 键值对方式存储 对象存储 对象存储
是否可以重复 键不能重复值可以重复 不能重复 可以重复
是否有序 无序 无序 有序
计算方式

使用key计算hashcode

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

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

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

原因:

  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),而且每次扩容是前一次的二倍

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

猜你喜欢

转载自blog.csdn.net/qq_41060127/article/details/88419391
今日推荐