Java---Collection+Iterator

Posted LL.LEBRON

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java---Collection+Iterator相关的知识,希望对你有一定的参考价值。

Collection+Iterator

一·Collection集合

1.1集合概述

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

集合和数组既然都是容器,它们有啥区别呢?

  • 数组的长度是固定的。集合的长度是可变的。
  • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而是对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

1.2集合框架

集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map

  • Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.Listjava.util.Set
    • List:特点是元素有序,元素可重复。List接口的主要实现类有java.util.ArrayListjava.util.LinkedList
    • Set:特点是元素无序,而且不可重复。Set接口的主要实现类有java.util.HashSetjava.util.TreeSet

1.3Collection常用功能

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

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

代码如下:

public class mainIo1 {
    public static void main(String[] args) throws IOException {
        //使用多态形式
        Collection<String> a1 = new ArrayList<>();
        a1.add("小皮皮");
        a1.add("美滋滋");
        a1.add("hhh");
        System.out.println(a1);
        System.out.println("hhh是否移除?" + a1.remove("hhh"));
        System.out.println(a1);
        System.out.println("hhh在集合里面吗?" + a1.contains("hhh"));
        System.out.println("集合大小:" + a1.size());
        System.out.println("集合是否为空?" + a1.isEmpty());

        Object[] objects = a1.toArray();
        for (Object object : objects) {
            System.out.println(object);
        }
        a1.clear();
        System.out.println("集合是否为空?" + a1.isEmpty());
    }
}
[小皮皮, 美滋滋, hhh]
hhh是否移除?true
[小皮皮, 美滋滋]
hhh在集合里面吗?false
集合大小:2
集合是否为空?false
小皮皮
美滋滋
集合是否为空?true

二. Iterator迭代器

2.1Iterator接口

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

想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作,下面介绍一下获取迭代器的方法:

  • public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

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

Iterator接口的常用方法如下:

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

代码如下:

public class mainIo1 {
    public static void main(String[] args) throws IOException {
       //使用多态方式,创建对象
        Collection<String> coll=new ArrayList<>();

        coll.add("小皮皮");
        coll.add("美滋滋");
        coll.add("哈哈哈");

        Iterator<String> it = coll.iterator();
        while (it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }
    }
}

小贴士:

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

2.2增加for

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式:

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

    public class mainIo1 {
        public static void main(String[] args) throws IOException {
            int[] a = {2, 434, 34, 45, 3};
            for (int i : a) {
                System.out.println(i);
            }
        }
    }
    
  • 练习2:遍历集合

    public class mainIo1 {
        public static void main(String[] args) throws IOException {
            Collection<String> c = new LinkedList<>();
            c.add("小皮皮");
            c.add("美滋滋");
            c.add("哈哈哈");
            for (String s : c) {
                System.out.println(s);
            }
        }
    }
    

小贴士:

新for循环必须有被遍历的目标。目标只能是Collection或者是数组。新式for仅仅作为遍历操作出现。

以上是关于Java---Collection+Iterator的主要内容,如果未能解决你的问题,请参考以下文章

Java Collection Framework概述

Java--Collection和Map集合

Java - Collection

Java---Collection+Iterator

Java Collection API

Java Collection框架详解