zoukankan      html  css  js  c++  java
  • 集合

    list

    ArrayList

      01,list实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的 效率比

    较高

      02,List接口存储的是一组不唯一(可以重复),有序(插入顺序)的对象

      List  list  =  new ArrayList () ;     //初始化长度为10

      list . add (11) ;  //这时候集合会自动扩容,返回一个新的数组长度=原数组长度*1.5+1;

    LinkedList

      01,采用链表存储方式,插入和删除元素时效率比较高

      

      

    Set

      Set接口存储的是唯一,无序对象的集合

      

    HashSet是set的实现类

      01,存放的是对象的引用、

      02,hashset底层是hashMap实现的

      02,hashsset中添加数据的步骤

        001,对key的hashcode进行hash运算,得到的值就是对应的index

        002,判断index所指向的数组元素是否为空,如果为空就直接插入

        003,如果不为空,依次查询entry中的next所指定的元素,判断key是否相等,如果想等就

    直接覆盖

        004,如果不相等,通过next变量将值插入entry数组中

    HashSet与treeSet对比

      01,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只不过

    Map的key

      02,Map的Key和Set都有一个共同的特性就是集合的唯一性,TreeMap更是多了一个排序的功

      03,hashCode和equals()是hashMap用的,因为无需排序,所以只需要关注定位和唯一性即

      04,由于treemap需要排序,所以需要一个Comparator为键值进行大小比较

    map

      01,map是一个键值对的集合,有key和value,通过key拿到value的值

      02,Set中的add默认底层走的是Map的put,所以key是不允许重复的,也是先判断对象的

    hashCode,之后equals比较

  • 相关阅读:
    【题解】Luogu P3217 [HNOI2011]数矩形
    【题解】 Luogu P4312 / SP4155 [COCI 2009] OTOCI / 极地旅行社
    珂朵莉树详解
    数学手法之线性基
    【题解】luogu P3386 【模板】二分图匹配
    【题解】Luogu P2146 [NOI2015]软件包管理器
    css 垂直居中方法汇总
    css3中什么时候用transition什么时候用animation实现动画
    前端进阶(8)
    前端进阶(12)
  • 原文地址:https://www.cnblogs.com/liuyunfei/p/7125317.html
Copyright © 2011-2022 走看看