资讯专栏INFORMATION COLUMN

Java集合遍历

MadPecker / 898人阅读

摘要:集合的遍历使用主要用于遍历集合中的元素,因此创建的对象是一个迭代器。提供的四个方法如果迭代器的集合还没有被遍历完,返回。

集合的遍历

使用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循环中修改的迭代变量的值是也是没有任何意义。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68471.html

相关文章

  • Java集合框架概述和集合遍历

    摘要:第三阶段常见对象的学习集合框架概述和集合的遍历一集合框架的概述集合的由来如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。进而它们的遍历方式也应该是不同的,最终就没有定义迭代器类。 第三阶段 JAVA常见对象的学习 集合框架概述和集合的遍历 (一) 集合框架的概述 (1) 集合的由来 如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一...

    happyhuangjinjin 评论0 收藏0
  • java集合和泛型的知识点归纳1

    摘要:接口也是集合中的一员,但它与接口有所不同,接口与接口主要用于存储元素,而主要用于迭代访问即遍历中的元素,因此对象也被称为迭代器。迭代器的实现原理我们在之前案例已经完成了遍历集合的整个过程。 【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 [ ] 能够说出集合与数组的区别 [ ] 说出Collection集合的常用功能 [ ]...

    daryl 评论0 收藏0
  • 面试官:说说快速失败和安全失败是什么

    摘要:我们都接触这些集合类,这些在包的集合类就都是快速失败的而包下的类都是安全失败,比如。安全失败明白了什么是快速失败之后,安全失败也是非常好理解的。最后说明一下,快速失败和安全失败是对迭代器而言的。 什么是快速失败(fail-fast)和安全失败(fail-safe)?它们又和什么内容有关系。以上两点就是这篇文章的内容,废话不多话,正文请慢用。 我们都接触 HashMap、ArrayLis...

    calx 评论0 收藏0
  • Java集合框架——List接口

    摘要:第三阶段常见对象的学习集合框架接口按照集合框架的继承体系,我们先从中的接口开始学习一概述及功能演示概述在中充当着一个什么样的身份呢有序的也称为序列实现这个接口的用户以对列表中每个元素的插入位置进行精确地控制。线程不安全,效率高。 第三阶段 JAVA常见对象的学习 集合框架——List接口 showImg(https://segmentfault.com/img/remote/14600...

    褰辩话 评论0 收藏0
  • Java 集合 Collection、Iterator

    摘要:如果需要创建对象,则必须与一个被迭代的集合。这是一个有状态的方法该方法用于保证对该流的后续访问中最大允许访问的元素个数。可以对集合元素进行整体的聚集操作。 Java集合分为Set(无序、不可重复)、List(有序、重复)、Queue(队列)和Map(映射关系) Java集合概述 数组元素既可以是基本类型的值,也可以是对象(实际保存对象的引用变量)集合只能保存对象(实际保存对象的引用变量...

    harryhappy 评论0 收藏0

发表评论

0条评论

MadPecker

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<