Java 之 Collection 集合

一、Collection 集合

   Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是 java.util.List 和 java.util.Set。

   List 的特点是 元素有序、元素可重复。主要实现类有 java.util.ArrayList 和 java.util.LinkedList。

   Set 的特点是 元素无序、而且不可重复。主要实现类有 java.util.HashSet 和 java.util.TreeSet。

   下面通过一张图来描述整个 Collection 集合类的基础体系。

    

 

   其中,红色的为 接口,其他的为具体的实现类。

二、collection集合的常用功能

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

   常用方法:

public boolean add(E e):      把给定的对象添加到当前集合中 
public boolean remove(E e):    把给定的对象在当前集合中删除
public void clear() :          清空集合中所有的元素
public boolean contains(E e)`: 判断当前集合中是否包含给定的对象
public boolean isEmpty():      判断当前集合是否为空。
public int size():             返回集合中元素的个数
public Object[] toArray()`:    把集合中的元素,存储到数组中

    Tips:更多的 Collection 中的方法自行查看 API 进行学习。

三、Iterator 迭代器

  1、Iterator 接口

    在程序开发中,经常需要遍历集合中的所有元素。JDK 专门提供了一个接口 java.util.Iterator。Iterator 接口也是 java 集合中的一员,但它与 Collection、Map 接口有所不同,Collection 接口与 Map 接口主要用于存储元素,而 Iterator 主要用于迭代访问(遍历)collection 中的元素,因此 Iterator 被称为 迭代器。

    迭代:即 Collection 集合元素的通过获取方式,在取元素之前要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出来。一直把集合中的所有元素全部取出,这种取出方式专业术语称为迭代。

    常用方法

public E next():            返回迭代的下一个元素
public boolean hasNext():   如果仍有元素可以迭代,则返回 true

     Demo

 1 public class IteratorDemo {
 2       public static void main(String[] args) {
 3         // 使用多态方式 创建对象
 4         Collection<String> coll = new ArrayList<String>();
 5 
 6         // 添加元素到集合
 7         coll.add("A");
 8         coll.add("B");
 9         coll.add("C");
10         //遍历
11         //使用迭代器 遍历   每个集合对象都有自己的迭代器
12         Iterator<String> it = coll.iterator();
13         //  泛型指的是 迭代出 元素的数据类型
14         while(it.hasNext()){ //判断是否有迭代元素
15             String s = it.next();//获取迭代出的元素
16             System.out.println(s);
17         }
18       }
19 }

     Tips:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的 next 方法,将会发生 java.util.NoSuchElementException 没有集合元素的异常。

  2、迭代器的实现原理

     遍历的步骤:

      (1)调用集合的 Iterator() 方法获得迭代器对象

      (2)使用 hashNext() 方法判断集合中是否存在下一个元素

      (3)如果存在,则调用 next() 方法将元素取出;否则说明已经到达了集合末尾,停止遍历元素

    Iterator 迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,下来通过一个图来演示 Iterator 对象迭代元素的过程。

    

       (1)在调用 next 方法前,迭代器的索引位于第一个元素之前,即索引为 -1 的位置,不执行任何元素。

     (2)当第一次调用迭代器的 next 方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回

     (3)当再次调用 next 方法时,迭代器的索引会指向第二个元素并将该元素返回,依次类推,直到 hasNext 方法返回 false,表示到达了集合的末尾,终止对元素的遍历。  

  3、增强 for

    增强 for 循环(for each循环)是JDK 1.5 以后出来的一个高级 for 循环,专门用来遍历数组和集合的。

    它的内部原理其实是个 Iterator 迭代器,所有在遍历的过程中,不能对集合中的元素进行增删操作。

    语法格式

for(元素的数据类型  变量 : Collection集合or数组){ 
  	//写操作代码
}

     注意:它用于遍历 Collection 和数组,通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。

     Demo:

1 public class Demo{
2     public static void main(String[] args) {
3         int[] arr = {3,5,6,87};
4            //使用增强for遍历数组
5         for(int a : arr){//a代表数组中的每个元素
6             System.out.println(a);
7         }
8     }
9 }

 

猜你喜欢

转载自www.cnblogs.com/niujifei/p/11435089.html
今日推荐