zoukankan      html  css  js  c++  java
  • 集合

    集合的由来及集合继承体系图

    * A:集合的由来

      * 数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少

    * B:数组和集合的区别

      * 区别1 :

        * 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值

        * 集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象Integer int double Double

      * 区别2:

        * 数组长度是固定的,不能自动增长

        * 集合的长度的是可变的,可以根据元素的增加而增长

    * C:数组和集合什么时候用

      * 1,如果元素个数是固定的推荐用数组

      * 2,如果元素个数不是固定的推荐用集合(用处更多)

    * D:集合继承体系图

     List的三个子类的特点

    * A:List的三个子类的特点 

      ArrayList:

        底层数据结构是数组,查询快,增删慢。

        线程不安全,效率高。

      Vector:

        底层数据结构是数组,查询快,增删慢。

        线程安全,效率低。

        Vector相对ArrayList查询慢(线程安全的)

        Vector相对LinkedList增删慢(数组结构)

      LinkedList:

        底层数据结构是链表,查询慢,增删快。

        线程不安全,效率高。

      Vector和ArrayList的区别

        Vector是线程安全的,效率低

        ArrayList是线程不安全的,效率高

        共同点:都是数组实现的

      ArrayList和LinkedList的区别

        ArrayList底层是数组结果,查询和修改快

        LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢

        共同点:都是线程不安全的

    * B:List有三个儿子,我们到底使用谁呢?

      查询多用ArrayList

      增删多用LinkedList

      如果都多ArrayList

    注意

    (Set存储位置是由它的HashCode码决定的,所以它存储的对象必须有equals()方法,而且Set遍历只能用迭代,因为它没有下标。)

      List中存储的是对象的引用,而不是对象本身。如果不清楚这一点会在这里有个坑,例如:

    List<List<String>> list=new ArrayList<>();
    
    List<String> list2=new ArrayList<>();
    
    for(int i=0;i<10;i++){
    
        list2.add(""+i);    
    
        list.add(list2);
    
        list2.clear();
    
    }

     这样最后得到的就只能是一堆空的集合了。

  • 相关阅读:
    VMware VSAN 设计规则
    通过命令行给 XenServer 打补丁
    XenServer 根分区空间满的解决办法
    sftp命令不被识别
    windows cmd窗口提示“telnet”命令不能内部或外部命令,也不是可运行的程序
    Eclipse安装ModelGoon控件(ModelGoon控件反向生成UML)
    WINDOWS8.1安装ORACLE客户端及配置
    CentOs下安装maven
    centos下安装java8
    mono支持gb2312
  • 原文地址:https://www.cnblogs.com/fyf79515/p/11694334.html
Copyright © 2011-2022 走看看