Collection总序

1,Collection 是所有单列集合的父接口,因此在Collection中定义了单列集合( List 和 Set )通用的一些方法, 这些方法可以用于操作所有的单列集合。

2,Collection的特点

  • 一组任意类型的对象
  • 无序
  • 无下标
  • 不能重复
  • 没有直接实现方法,需要用**子类方法(Set,List)**进行实现(上转型对象)

常用方法

有以下几种方法(不全)

  • boolean add(E e) 添加对象e到容器里。
  • boolean addAll(Collection c) 将集合c中的元素添加到容器里。
  • void clear( ) 清空容器内所有元素。
  • boolean remove(E e) 将对象e从元素中删除。
  • boolean isEmply() 判断容器是否为空。
  • boolean equals(Object obj) 判断集合是否和e相等
  • int size() 返回元素个数。
  • boolean contains(E e) 判断容器是否存在e对象。
  • Object[] toArray() 将容器中的元素存到数组内。
  • Iterator iterator() 返回此集合中元素的迭代器。下文详细

Collection中的迭代

1,概念

获取Collection中元素的通用方式。

迭代器适用于所有单列集合。

2,过程

先判断容器中是否有元素,无则停止,有则取出,然后继续判断容器中剩余元素,直到所有元素取出。

Collection的遍历

针对需求(遍历容器中所有元素),JDK提供了一个接口Iterator(Java.util.Iterator)

1,Interator常用方法

  • boolean hasNext(); 判断容器是否有下一个元素。
  • E next(); 取出下一个元素,指针/索引指向下一个。

2,底层遍历过程/迭代器Interator遍历原理

1,建立容器对象并添加元素.

Collection<String> collection = new ArrayList<>();
collection.add(E e);
...

2,调用Interator方法获取迭代实现类对象

Interator<?> itr = collection.interator(); 

3,使用hasNext()方法判断集合是否有下一个元素。

itr.hasNext();

4, 如果存在, 则调用next()方法将元素取出,指针/索引会向后移动

itr.next();

5,常见遍历方法

while(itr.hasNext()){
    String s = itr.next();
    System.out.print(s);
}

6,注意

  • 如果到结尾继续next()方法,将会报错java.util.NoSuchElementException
  • 如果迭代中途进行删除添加操作,将报错ConcurrentModificationException(并发修改异常)。

3,增强for循环遍历(用的多)

1, 增强for循环/for each循环遍历是JDK1.5之后出的高级for循环,用来遍历数组和集合,内部原理还是Interator迭代器,所有上文2个注意在这里同样需要注意。

for( E e : 单列集合或数组 ){
    操作;
    注意:这里绝对不可以添加或者删除容器元素。
}

2,必须要有遍历目标,数组或者Collection。

3,增加for循环本质就是个语法糖(内部语法没有变,只是看起来简洁了),依然是一个普通for循环。

4,优点

不用操作索引,内部自动进行

5,缺点

无法操作索引,如果要操作索引需要使用普通for循环。

点击回到首页