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是针对集合操作的工具类,有对集合进行排序和二分查找的方法。

  • 相关阅读:
    java8新特性学习:stream与lambda
    Storm实践(一):基础知识
    Google Protocol Buffer入门
    zeromq实践
    maven实践--你所需要了解的maven
    springcloud实践(一)服务发现:Eureka
    职责链模式(chain of responsibility Pattern)
    代理模式 (Proxy Pattern)
    享元模式(Flyweight Pattern)
    外观模式(Facade Pattern)
  • 原文地址:https://www.cnblogs.com/xp2h/p/12519520.html
Copyright © 2011-2022 走看看