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


  • 相关阅读:
    Conversion to Dalvik format failed with error 1 解决方法
    android 简单的反编译
    android ant打包问题总结
    android Sdcard 不同系统映射
    android 好用的开源框架
    android ScrollView 与 ListView 冲突汇总
    android 关于ImageView无法显示过长图片
    android 微信分享api调用总结
    android 捕获线程出错 重启线程
    c++中的容器和string类
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6637498.html
Copyright © 2011-2022 走看看