zoukankan      html  css  js  c++  java
  • Collection集合

    1、什么是集合

      集合是一个大小可变的容器,Collection是单列集合,一个元素只能一个值。

    2、子类

      2.1 List集合  -  添加的元素是有序,可重复,有索引

        实现类:

          ArrayList(常用):底层结构基于数组,查询快,增删慢;线程不安全,效率高;

          LinkedList常用):底层结构基于链表,增删快,查询慢;线程不安全,效率高;支持双链表,定位首尾速度也快;

          Vector(基本不用):底层结构是数组,查询快,增删慢;线程安全,效率低;

      2.2 Set集合  -  添加的元素是无序,不重复,无索引的,增删改查的性能都很好

        实现类:

          HashSet常用):添加的元素是无序,不重复,无索引的;

            LinkedHashSet:添加的元素是有序,不重复,无索引的;

          TreeSet:按照大小默认升序排序,不重复,无索引;

        扩展1:Set集合为什么可以去重?

            1、元素本身就有值特性的,字符或者数值类型;

            2、对于引用类型,先通过hashcode()得到彼此的hash值(所谓的内存地址)比较,如果hash值相同,会让两个对象进行equals比较;

        扩展2:HashSet底层结构

            JDK 1.8 之前 哈希表 = 链表 + 数组 + (哈希算法);

            JDK 1.8 之后 哈希表 = 链表 + 数组 + 红黑树 +(哈希算法)当链表长度超过阈值8时会转为红黑树结构;

    3、常用方法

    #添加功能
    boolean add(E e);
    boolean addAll(Collection c);
    
    #删除功能
    void clear();
    boolean remove(E e);
    
    #判断功能
    boolean contains(E e);
    boolean containsAll(Collection c);
    boolean isEmpty();
    
    #获取迭代器进行遍历集合
    Iterator<E> iterator();
    
    #交集功能
    boolean retainAll(Collection c);
    
    #长度功能
    int size();
    
    #把集合转换为数组
    Object[] toArray();

    4、Collections工具类

      针对集合操作的工具类,都是静态方法;

      4.1 常用方法

    #排序
    sort(List<T> list);
    
    #查找
    int binarySearch(List<T> list ,T key);//二分查找
    T max(Collection<?> coll);
    
    #反转
    reverse(List<?> list);
    
    #随机置换
    shuffle(List<?> list);

      4.2 扩展:Collection和Collections的区别?

      Collection是单列集合的顶层接口,有子接口List和Set;

      Collections是针对集合操作的工具类,有对集合进行排序和二分查找的方法。

  • 相关阅读:
    Sass-unitless()函数
    Sass函数:unit()函数
    Sass函数:Introspection 函数 -type-of()
    Sass函数-值列表index
    Sass函数--列表函数append
    Sass函数-join()函数
    Sass函数:列表函数nth
    Sass函数:值列表函数length
    Sass函数:random()函数
    学习笔记77—Iphone集
  • 原文地址:https://www.cnblogs.com/xp2h/p/12519520.html
Copyright © 2011-2022 走看看