Java 集合相关概念

集合

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

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

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

五、集合和数组的区别并发

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

六、集合的体系结构对象

七、Collectionblog

 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():获取下一个元素索引

八、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() :获取上一个元素接口

九、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()内存

 

十、ArrayList

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

十一、LinkedList

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

相关文章
相关标签/搜索