java - 集合Collection

集合的由来:

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

 

数组和集合的区别:

  1.数组既可以存储基本数据类型,又可以存储引用数据类型

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

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

     集合的长度是可变的,不能自动增长

数组和集合什么时候用

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

  2.如果元素个数不是固定的推荐用集合

 

集合体系图:

Collection 单例集合的根接口
 List  如果是实现了List接口的集合类,具备的特点: 有序,可重复。 
   ArrayList  ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
   LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
   Vector(了解即可)  底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。


 Set  如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
   HashSet  底层是使用了哈希表来支持的,特点: 存取速度快. 
   TreeSet   如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
  

int size()    获取元素个数

boolean isEmpty()  是否个数为 0

boolean contains(Object element)  是否包含指定元素

boolean add(E element)  添加元素,成功时返回 true

boolean remove(Object element)  删除元素,成功时返回 true

Iterator<E> iterator()  获取迭代器

boolean containsAll(Collection<?> c)   是否包含指定集合 c 的全部元素

boolean addAll(Collection<? extends E> c)   添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true

boolean removeAll(Collection<?> c)   删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true

boolean retainAll(Collection<?> c)   保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true

void clear()   删除所有元素

 

成员方法 :

  toArray:将集合转换成数组(会将对象变为Object,需要向下转型才能调用内部特有方法)

  Arrays.aslist(array) 将数组转化为集合

 

 

迭代器:

  迭代器概述:

    集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历)

  迭代器原理:

    迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和Next()方法,这样做也是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有2个:1规定了整个集合体系的方法都是hasNext()和next()。2代码底层内部实现,使用者不用管怎么实现,会用即可

  

   it.remove() 删除最后操作的元素.

 


  list接口:

    add(int index,E element)  在指定位置添加

    remove(int  index)  根据索引删除

    get(int  index)  根据索引获取

    set(int index, E element)  指定位置修改

ListIterator:在list迭代中可操作

  void hasPrevious()   判断游标前面是否有元素;

  Object previous()   返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;

  int nextIndex()   返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;

  int previousIndex()   返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;

  void add(E)   在游标 前面 插入一个元素     注意,是前面

  void set(E)   更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;

  void remove()   删除迭代器最后一次操作的元素,注意事项和 set 一样。

 

 

posted @ 2018-11-15 17:06  红豆·  阅读(321)  评论(0编辑  收藏  举报