zoukankan      html  css  js  c++  java
  • Java集合框架

    数组和集合:
    数组的特点:
    1、在使用之前,要确定空间的大小,空间大小固定
    2、数组分配的空间是连续的
    3、数组可以用来存储基本类型的数据、对象
    比如:Student[] stu=new Student[5]
    4、数组存储的数据类型和对象类型必须为同一种类型

    集合的特点:
    1、集合分配的空间不要求是连续
    2、集合只能存储对象,不能够存储基本数据类型
    3、存储对象不要求是同一种类型的对象
    集合中共性的方法:
    add(E e) //add(Object obj) 往容器增加元素
    a1.addAll(a12);//把容器a12里面的元素增加到容器a1里面
    size() //统计容器中元素的个数
    clear() //清空容器中的元素
    contains(Object o) //容器中是否包含该元素
    remove(Object o) //删除容器中个的某个元素
    removeAll(Object o)
    a1.retainAll(a12);//取交集,把容器a12的相同的元素取出来,放在a1容器中
    a1.containsAll(a12);//包含关系 容器a1包含容器a2中所有的元素,如果包含,则返回true,否则,返回false
    String[] array=a12.toArray(new String[5]);//把集合a12转换成数组array
    增加:
    a1.addAll(1, a12);//从指定位置把容器a12增加到容器a1里面
    add(1, "ETC09");//把元素增加到指定位置index上,位置的下标是从零开始
    删除:
    remove(int index);//删除容器中某个位置上的元素
    修改:
    set(int index,E element);//修改容器中某个位置上的元素内容为element
    查询:
    subList(int from,int to);//某个容器(集合)中拿出子容器(集合),可以去from位置上的元素,但不能取to位置上的元素,返回的是一个子容器(集合)
    get(int index);//查询容器中index位置的元素,返回一个元素
    a12.indexOf("ETC09");//返回容器中某一个元素所在容器中对应的位置

    Collection接口包括:List接口、Set接口
    List接口包括:ArrayList、LinkedList、Verctor
    Set接口包括:HashSet、TreeSet


    存储方式为什么这么多种呢?
    之所以有这么多容器来装东西,是因为他们各自存储东西的存储方式不一样。
    存储方式:数据结构

    List接口存储一组不唯一,有序(插入顺序)的对象
    不唯一的意思是:数据可以重复
    如List的数组:[ETC01, ETC02, ETC03, ETC04, ETC05, ETC06, ETC04, ETC05, ETC06, ETC07, ETC08]

    List:
    1、List是接口
    2、List容器存储的对象可重复(不唯一)
    3、List容器有序(输出的时候,按放入时的顺序输出)

    List中所特有的方法:
    add(int index,E element)
    add(int index,Collection c)
    indexof(Object o)
    remove(int index)
    set(int index,E element)
    subList(int from,int to)

    ArrayList类实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
    LinkedList类采用链表存储方式。插入、删除元素是效率比较高。
    链表里面有分成数据域和指针域


    LinkedList和ArrayList区别:
    LinkedList:
    底层数据存储方式:链表
    插入和删除的效率比较高
    ArrayList:
    底层数据存储方式:数组
    随机访问和遍历元素的效率高

    Set接口不存在get()方法
    Set:
    1、Set是一个接口
    2、Set容器存储的对象不可重复(唯一)、无序的对象

    底层数据存储方式:哈希表

  • 相关阅读:
    centos vsftpd
    centos nginx
    linux 修改配色
    面试题讲解
    文件操作
    Python
    Python-linux作业
    python(12.17)笔记
    python周末作业(12.14--16)
    python作业(12.12)
  • 原文地址:https://www.cnblogs.com/xuegu/p/5755399.html
Copyright © 2011-2022 走看看