zoukankan      html  css  js  c++  java
  • Collection单列集合中的常用实现类

    Collection 集合层次的根接口
        List 有序 有索引 可以重复
          ArrayList
            底层数据结构是数组 查询快 增删快
            线程不安全 效率高
          LinkedList
            底层数据结构是链表 查询慢 增删快
            线程不安全 效率高
          Vector
            底层数据是数组 查询和增删介于前两者之间
            线程安全 效率低

        Set 唯一
          在调用add()方法时:
          在底层中以map的形式存储,存储时调用元素的hashCode(),equals(),map会自动比较key值(就是hash值)
            先比较hash值
              如果对象的hash值不相等,直接添加元素到集合
            如果对象的hash值相等 判断equals
              如果相同 不添加
              如果不相同 添加 //不直接用equals是为了提高比较的效率

          HashSet
            底层是哈希表(数组和链表的结合) 查询和增删都比较快
            无序 唯一
            通过元素本身的hashCode()和equals()方法保证元素的唯一性
            如果元素是基本数据类型和字符串类型一般都已经重写了hashCode()和equals()这两种方法了,可以直接存储
            如果集合存储自定义数据类型时就需要自己重写这两个方法(快捷键 shift + alt + s)
              重写hashCode()
                A:如果数据是基本数据类型,hashCode值一般是本身,
                 如果是引用数据类型,直接调用hashCode()方法即可(相当于调用了继承自父类的hashCode())
                B:一般可以添加一个中间值来处理hash值小了容易相等的情况 (*31)

          LinkedHashSet
            有序 唯一
            底层数据链表 + 哈希表(数组和链表的结合)
            链表来保证有序 哈希表保证元素唯一


  • 相关阅读:
    MY_0003:设置界面显示单位
    H5_0024:对于事先无法确定css大小的情况,可以通过JS动态修改
    H5_0023:html页面禁止放大缩小页面
    MY_0002:导出单位设置
    MY_0001:添加命令到自定义工具栏
    H5_0020:判断安卓苹果平台
    Web_0003:关于PHP上传文件大小的限制
    H5_0019:JS中定义json结构
    H5_0018:z-index失效的原因
    H5_0017:通过元素自定义属性值获取元素对象,并获取属性值
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6637498.html
Copyright © 2011-2022 走看看