Java集合遍历

本文介绍了如何使用Java中的Iterator来遍历集合,并提供了使用Iterator、Lambda表达式及foreach的不同示例。通过这些示例,读者可以了解到Iterator的基本用法及其在集合遍历中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合的遍历

使用Iterator
Iterator主要用于遍历集合中的Collection元素,因此Iterator创建的对象是一个迭代器。

Iterator提供的四个方法

  • boolean hasNext(): 如果迭代器的集合还没有被遍历完,返回ture。
  • Object next():返回集合里的下一个元素。
  • void remove():删除集合里上一次next方法返回的元素。
  • void forEachRemaining(Consumer action):这个是java 8为Iterator新增的默认方法,该方法可使用Lambda表达式遍历所有的集合元素。

next方法

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 
 * 使用jdk8中的iterator遍历集合;
 */
public class IteraorTest {
    public static void main(String[] args) {
        List books=new ArrayList<>();
        books.add("fengk");
        books.add("niaho");
        Iterator it=books.iterator();
        while (it.hasNext()){
            it.next();
            if(books.equals("fengk")){
                it.remove();
            }
            System.out.println(it.next());
        }
    }
}

> 输出结果
>niaho

Iterator只用于遍历集合,本身本身并不具有承装对象的能力。如果需要就要创建Iterator对象,则必须有一个被迭代的集合。Iterator必须依附于Collection对象,若有一个Iterator对象,则必然有一个与之关联的Collection对象。

使用Lambda表达式遍历Iterator

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * 
 */
public class IteratorEach {
    public static void main(String[] args) {
        // 创建一个集合
        Collection books=new HashSet<>();
        books.add("java");
        books.add("c#");
        Iterator it=books.iterator();
        // 使用Lambda表达式遍历所有的集合
        it.forEachRemaining(obj->System.out.println(obj));
    }
}
输出结果
c#
java

注意:这里的输出是倒序。

使用foreach遍历集合元素

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class ForeachTest {
    public static void main(String[] args) {
        // 创建一个集合
        Collection books=new HashSet<>();
        books.add("java");
        books.add("c#");
        for(Object obj:books){
//            此处的books变量也不是集合的本身元素
            String book=(String)obj;
            System.out.println(book);
            if (book.equals("java")){
                books.remove(book);
            }
        }
        System.out.println(books);
    }
}

for循环中的迭代变量也不是集合元素本身,系统只是以此把集合元素的值赋值给迭代变量,因此for循环中修改的迭代变量的值是也是没有任何意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值