关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)

已经学习过了基本的集合操作,那么对于集合的输出本身也是有多种形式的,可以使用如下的几种方式: · Iterator 迭代输出(90%)、ListIterator(5%)、Enumeration(1%)、foreach(4%) 但是在讲解输出的时候一定要记住以下的原则:“ 只要是碰到了集合,则输出的时候想都不想就使用 Iterator 进行输出 ”

Iterator

关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第1张图片

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class iterator {
     
    public static void main(String[] args) {
     
        // Iterator:可以迭代List和Set集合
        // ListIterator:只能迭代Lsit集合
        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(2);
        data.add(3);
        data.add(4);
        data.add(5);
        // 循环遍历列表方式
        for(int i = 0 ; i < data.size();i++){
     
            System.out.println(data.get(i));
        }
        Iterator<Integer> iterator = data.iterator();
        // 通过 Collection 接口为其进行实例化之后,一定要记住,Iterator 中的操作指针是在第一条元素之上
        // 此处有一个指针的含义,首先判断下一个下标是否有
        /* while(iterator.hasNext()){
            // 遍历输出列表
            // next():将指针下移动一位并返回此时数据
            Integer i = iterator.next();
            System.out.println(i);
        } */
        // remove方法必须有值才能删除,所以指针移动一次到列表第一个元素上才能进行删除
//        iterator.next();
//        iterator.remove();
//        System.out.println(data.size());

        // 从后往上,但使用的指针和从上往下的一样,所以,如果没有往下移动过指针,会报错。
        ListIterator<Integer> iterator1 = data.listIterator();
//        iterator1.previous();
        // 因为此时没有移动过,add方法将元素添加到首位置
        iterator1.add(100);
        iterator1.next();
        iterator1.next();
        iterator1.set(200);
        System.out.println(data.size());
        iterator1.previous();
        iterator1.previous();
        iterator1.previous();
        while(iterator1.hasNext()){
     
            Integer i = iterator1.next();
            if(i.equals(2)){
     
                iterator1.remove();
            }else{
     
                System.out.print(i+"、");
            }
        }
        // 在使用 Iterator 输出的时候有一点必须注意,在进行迭代输出的时候如果要想删除当前元素,则只能使用 Iterator
        // 接口中的 remove()方法,而不能使用集合中的 remove()方法。否则将出现未知的错误。
        // 从实际的开发角度看,元素的删除操作出现的几率是很小的,基本上可以忽略,即:集合中很少有删除元素 的操作。
        // Iterator接口只能进行由前向后的单向输出。如果要想进行双向输出,则必须使用其子接口 —— ListIterator。
        // forEach:增强For循环,最早出现在c#中
        // 用于迭代数组或集合
        /**
         * 语法:
         *   for(数据类型 变量名:集合或数组名){}
         *   遍历过程中不能对集合中的元素进行增删操作
         */
        int[] arr = {
     6,5,4,3,2,1};
        for (int i:arr) {
     
            System.out.println(i);
        }
        System.out.println("----------我是华丽的分割线----------");
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("锄禾日当午");
        arrayList.add("汗滴禾下土");
        arrayList.add("谁知盘中餐");
        arrayList.add("粒粒皆辛苦");
        for(String i : arrayList){
     
            System.out.print(i+",");
        }
    }
}

ListIterator

关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第2张图片
具体栗子上方代码有

Enumeration

关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第3张图片

forEach

在使用 foreach 输出的时候一定要注意的是,里面的操作泛型要指定具体的类型,这样在输出的时候才会更加有针对性
具体实例最上方代码也有
关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第4张图片

toArray()方法

可以用在set集合中
关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第5张图片
关于java中Collection集合的遍历(Iterator迭代输出、ListIterator、Enumeration、foreach)_第6张图片
Set集合没有提供get方法,只能通过toArray或者Iterator遍历来获取set中的数据
对于Map集合的遍历方法在:

https://blog.csdn.net/qq_38679239/article/details/112357371

你可能感兴趣的:(Java,集合,集合,java,iterator)