• Java集合


    2020/7/8

    一、使用数组的缺点

    1、数组初始化以后,长度就不可以变了,不便于扩展。

    2、数组提供的属性、方法少,使用效率低。

    3、数组存储数据的特点单一(有序、可重复)。

     

     

    二、集合的分类

    三、Collection接口的方法:

     

    四、List接口中的方法

    五、ArrayList源码分析:

    1、jdk7底层创建长度是10Object数组,容量不够了则1.5倍扩容,原数组复制到新数组。

    2、Jdk8第一次调用add()时,底层才创建长度为10的数组,后续和jdk7无异。

    六、HashSet的重点:

    1、Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败。

    2、HashSet(包括LinkedHashSet)判断两个元素相等的标准:两个对象通过hashCode()方法比较相等,并且两个对象的equals()方法判断也相等。

    3、注意:对于存放在Set容器中的对象,该对象所属的类一定要重写equals()hashCode()方法,以实现对象相等规则,即“相等的对象必须具有相等的散列码”。

    4、HashSet中添加元素的过程,以添加元素a为例:

    (1)调用对象a所在类的hashCode()方法,计算元素ahash值。

    (2)根据此hash值再通过某种散列函数决定对象aHashSet底层数组中的存储位置(数组下标)。判断数组此位置上是否已经有元素了。

    (3)如果没有其它元素,则元素a添加成功。

    (4)如果已经有其它元素了(或者以链表形式存在的多个元素),则继续调用对象a所在类的equals()方法。equals()返回true则视为同一个元素,添加失败;返回false则不是同一个元素,则添加成功。

    (5)注:在jdk7中,元素a放到数组中,指向原来的元素。

          jdk8中,原来的元素在数组中,指向元素a

    七、LinkedHashSet的特点

    HashSet的基础上,使用双向链表来维护添加元素的次序,使得元素看起来是以插入顺序保存的。

    其插入性能略低于HashSet,但是在迭代访问Set里面的全部元素时具有很好的性能。

     

     

  • 相关阅读:
    小谈HTML中的META标签
    如何安装ASPAJAXExtSetup.msi
    <asp:Content> MasterPage技术
    Asp.Net数据控件引用AspNetPager.dll分页
    2011年的最后一天,怎么地也应该写篇博客
    asp.net利用存储过程和div+css实现分页(类似于博客园首页分页)
    Asp.Net 利用TimeSpan类实现时间差计算 并返回所需字符串(类似于SNS)
    最简单的asp.net ajax post,适用于初学者.
    分享AjaxPro或者Ajax实现机制
    Windows 7操作系统 IIS 7 配置asp.net网站伪静态配置问题
  • 原文地址:https://www.cnblogs.com/guan-zl/p/13266413.html
Copyright © 2020-2023  润新知