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
            有序 唯一
            底层数据链表 + 哈希表(数组和链表的结合)
            链表来保证有序 哈希表保证元素唯一


  • 相关阅读:
    虚拟DOM和diff算法
    面向对象之封装
    面向对象之类和函数的属性
    面向对象之__init__方法
    面向对象之初始类和对象
    面向对象与面向过程详解
    CSS高级技巧
    CSS定位
    模块之re模块详解
    模块之logging模块详解
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6637498.html
Copyright © 2011-2022 走看看