zoukankan      html  css  js  c++  java
  • Java 集合相关概念

    集合

    1、什么是集合? 对象类型的数组
    2、定义了一个数组,数组的元素的类型引用数据类型
    3、这种数组称为对象数组,数组每个元素其实都是一个对象的地址,而非对象本身。
      class Person{
        String name;
        int age;
      }
      Person[] persons = new Person[5];

    4、集合的来源:数组的不足:

      无法扩展:数组的长度是固定的,一旦创建,就无法修改。
      结果:每一次进行扩展时都要把原来的数组进行复制到另一个更大的空间。
      解决:将对象类型的数组,变成某个类型的私有成员变量。对于数组的种种操作,都封装成公有的方法。
      集合就是数组的封装

    5、集合和数组的区别

     1.共同点:
       都是用于存储数据的容器。可以更加方便统一管理数据。
     2.不同点:
      1.存储内容不同。
      数组既可以存在基本数据类型,也可以存储引用数据类型。必须是相同类型的元素
      集合只能存储引用数据类型。可以存储不同类型的元素。
     2.存储数量不同:
      数组的长度是不可变的,一旦确定大小就无法增删
      集合的长度是可变的,是一个可伸缩的容器
     3.方法不同:
      数组中只有Object定义的方法,以及一个length属性
      集合中可以有很多的方法。

    6、集合的体系结构

    7、Collection

     1.Collection是一个接口,不能创建对象,找一个实现类来调用方法。
     2.使用实现类ArrayList来调用接口中的方法。
     3.常用方法:
      boolean add(Object obj)
      boolean remove(Object o)
      void clear()
      boolean isEmpty()
      boolean contains(Object o)
      int size()
     4.Collection中带all方法
      addAll:把一个集合中的数据全部添加到另一个集合中
      containsAll:判断是否全部包含
      removeAll:删除两个集合的交集部分
      retainAll:保留两个集合的交集部分
     5.集合的遍历
      1.转成数组,通遍历数组的方式来间接的遍历集合
      Object toArray():可以把集合转变为数组
      2.迭代器
        爪子
      Iterator iterator()
      hasNext() :判断是否有下一个元素
      next():获取下一个元素

    8、List
     1.是Collection的一个子接口
     2.特点:
      有序:每个元素都有自己的位置,不同位置是有分别的。
      有索引:每个元素都自己的编号。
      可以存放相同元素,即使用相同的元素,位置不同,也可以区分开来。
     3.特有方法
      add(int index, E element)
      remove(int index)
      set(int index, E element)
      get(int index)
     4.List集合的遍历(第三种遍历)
      siz() get(i)
     5.并发修改异常
      java.util.ConcurrentModificationException
      因为集合本身和迭代器都在操作集合,操作冲突。
      解决方式:要么全部使用集合操作,要么全部使用迭代器操作。
      ListIterator是Iterator的子接口,
      hasPrevious():判断是否有上一个元素
      previous() :获取上一个元素

    9、Vector
     1.List只是一个接口,根据底层实现方式的不同,具有不同的实现类
      ArrayList:底层结构是数组,数组实现,顺序存储
      LinkedList:底层结构是链表,节点实现,链式存储
      Vector:底层结构是数组,数组实现,顺序存储
     2.Vector
      1.jdk1.0出现,jdk1.2被ArrayList替代。
      2.特点:
        线程安全,效率较低
        顺序存储,增删较慢
     3.特有遍历方式
      addElement(E obj)
      removeElement(Object obj)
      Enumeration<E> elements()
      boolean hasMoreElements()
      E nextElement()

    10、ArrayList

      1.是List的一个实现类
      2.没有什么特别的方法
      3.存储方式  
        数组实现,顺序存储
        通过物理内存的位置关系,来表示描述逻辑顺序的相邻。

    11、LinkedList

      1.是List的一个实现类
      2.存储方式
        节点实现,链式存储
        不通过物理内存位置的相邻来表示逻辑顺序的相邻
        每个元素都存储在一个节点中,节点除了元素数据本身之外,还需要存储下一个元素的内存地址。
      3.查询速度慢需要根据前面的节点来获取后一个节点的地址,前面所有的节点都访问一遍,节点数量多,查询速度较慢。
      4.增删速度极快,增删一个元素,只需要修改新增元素前后两个节点的引用域即可,与集合本身的元素个数无关。
      5.特有方法
       操作头部和尾部的特有方法
        addFirst(E e)
        addLast(E e)
        removeFirst()
        removeLast()
        getFirst()
        getLast()

  • 相关阅读:
    多个div并排显示的居中问题——来自腾讯的一道面试题
    c++ 类的对象与指针
    c++ 联合体
    用户输入一个数字,找到所有能够除尽它的数的总个数
    javascript
    今天的排版
    论学习php的方法
    我想对所有新程序员说的一些话
    注册表单
    安卓机器人
  • 原文地址:https://www.cnblogs.com/xfdhh/p/11185572.html
Copyright © 2011-2022 走看看