2020/7/13 集合之ArrayList集合、Collection接口、Iterator迭代器

一、集合

  1、集合介绍:

      集合,集合是java中提供的一种容器,可以用来存储多个数据。

      在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据。那么,集合和数组既然都是容器,它们有啥区别呢?

         数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据

  2、集合的继承实现关系:

      查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。

      Collection接口为最顶层集合接口了。 采集,聚集

源代码:
interface List extends Collection {
}
public class ArrayList extends AbstractList implements List{
}

      这说明我们在使用ArrayList类时,该类已经把所有抽象方法进行了重写。那么,实现Collection接口的所有子类都会进行方法重写。

      Collection接口常用的子接口有:List接口、Set接口

         List接口常用的子类有:ArrayList类、LinkedList类

         Set接口常用的子类有:HashSet类、LinkedHashSet类

      

二、Collection接口的基本方法

    

//创建集合的格式:
方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();
方式2:Collection 变量名 = new ArrayList();

    方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式

       方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。

    演示Collection接口中的方法

//创建集合
Collection coll = new ArrayList();
//1,往集合中添加对象元素。add(E e)方法,E代表创建集合时所指定的数据类型如<String>,那么,E就代表String类型;创建集合时若没有指定数据类型,那么,E就代表Object类型。
coll.add("abc");
coll.add("ef");
coll.add("g");        
//把集合打印一下。
System.out.println(coll); //打印结果为:[abc, ef, g]
System.out.println(coll.toString()); //打印结果为:[abc, ef, g]
//2,从集合中删除元素。remove(Object o)方法
coll.remove("ef");        
//删除后,集合元素为[abc, g]
//3,判断集合中是否包含指定元素。contains(Object o)方法
System.out.println(coll.contains("abc"));
//打印结果为true
System.out.println(coll.contains("ef"));
//打印结果为false
    
//4,获取集合元素个数。size()方法
System.out.println(coll.size());
//打印结果为2
 
//5,返回包含集合中所有元素的数组。toArray()方法
String[] array = coll.toArray();
//数组中的元素为{"abc", "g"}
 
//6,清除集合元素。remove()方法
coll.clear();
//清空后,集合元素为[],代表没有元素

三、Iterator迭代器

    1、概述:

      java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

      Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。

      一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

      集合中把这种取元素的方式描述在Iterator接口中。Iterator接口的常用方法如下

      

       hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

       next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

    2、迭代元素图解

      

     3、Iterator迭代方式的代码体现

        在Collection接口描述了一个抽象方法iterator方法,所有Collection子类都实现了这个方法,并且有自己的迭代形式。

        

         进行代码演示:

//1,创建集合对象。
Collection<String> coll = new ArrayList<String>();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
 
//2.获取容器的迭代器对象。通过iterator方法。
Iterator it = coll.iterator();
 
//3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
while(it.hasNext()){
    System.out.println(it.next());
}
 
/*
迭代器for循环的形式的使用
for (Iterator it = coll.iterator(); it.hasNext(); ) {
    System.out.println(it.next());
}
*/

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

原文地址:https://www.cnblogs.com/luzhijin/p/13293955.html