首页 > 编程语言 >Java集合迭代器的使用

Java集合迭代器的使用

时间:2023-11-30 10:33:25浏览次数:56  
标签:遍历 Java 迭代 iterator 元素 add 集合

Java迭代器(Iterator)是 Java 集合框架中的一种机制,它提供了一种在不暴露集合内部实现的情况下遍历集合元素的方法。Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合

获取迭代器对象
Iterator<类型> it=list.iterator();

迭代器方法
it.hasNext();判断检查迭代器中是否还有下一个元素,如果有则返回true,没有则返回false

in.next();返回当前指针所指位置的元素,并让指针向指向后面一位元素

it.remove()。用迭代器的删除方法。不能用集合的删除方法。

遍历注意要点
当迭代器遍历完所有元素后,再次调用next()方法强行获取元素,将引发NoSuchElementException异常。

迭代器遍历完成后,指针不会复位。

在每一次循环过程中确保使用一次next()方法, eg:调用多次,迭代器会跳过一些元素,导致遍历不完整。

在迭代器遍历时,不能用集合方法进行增加或删除。 eg:用来两个变量来分别记录被修改的次数和期望被修改的次数,当调用迭代器的方法时,两个值会同时改变,而调用集合方法时只会改变修改次数。

增强的for循环:Java提供了增强的for循环(也称为foreach循环),可以方便地遍历集合中的元素。使用增强的for循环时,不需要显式地使用迭代器,编译器会自动处理迭代器的创建和遍历。

代码示例

public class IteratorExample {
    public static void main(String[] args) {
        // 创建一个包含整数的集合
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);
 
        // 获取迭代器对象
        Iterator<Integer> iterator = numbers.iterator();
 
        // 使用迭代器遍历集合
        while (iterator.hasNext()) {//判断迭代器内是否还有没被遍历的元素
            int number = iterator.next();//获取下一个元素
            System.out.println(number);
 
            // 使用迭代器的remove()方法删除元素
            if (number % 2 == 0) {
                iterator.remove(); //注意要用迭代器自带的删除方法!!!
            }
        }
 
        // 输出修改后的集合
        System.out.println(numbers);
    }
}
列表迭代器(ListIterator)比起普通迭代器多了个添加方法,可以在遍历过程中添加元素
public class ListIteratorExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");

ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("B")) {
iterator.add("D");
}
}
System.out.println(list);
}
}
//在这个例子中,我们创建了一个包含三个元素的ArrayList。然后,我们使用ListIterator遍历列表,
//并在元素“B”之后添加一个新元素“D”。最后,我们打印出修改后的列表,它包含四个元素“A”、“B”、“D”和“C”。

 

 

标签:遍历,Java,迭代,iterator,元素,add,集合
From: https://www.cnblogs.com/Lzljh5392/p/17866735.html

相关文章

  • java代码连接redis
    RedisURIuri=RedisURI.Builder.redis("XXXX",16379).withDatabase(6).withPassword("XXXX").build();redisClient=RedisClient.create(uri);conn......
  • java集合框架(三)ArrayList常见方法的使用
    @[toc]##一、什么是ArrarListArrayList是Java中的一个动态数组类,可以根据实际需要自动调整数组的大小。ArrayList是基于数组实现的,它内部维护的是一个Object数组,默认初始化容量为10,当添加的元素个数超过了当前容量时,会自动扩容。ArrayList也被广泛用于Java中的集合框架,例如Java......
  • 【SpringBoot】单元测试报错java.lang.IllegalStateException: Could not load TestCo
    一、运行test类方法时候报错 二、分析原因,发现版本不一致 三、找到pom文件, 把<version>RELEASE</version>注释掉,刷新一下maven依赖 四:修改后,依赖版本一致。 这样,就可以运行了。 ......
  • Java基础——进制,浮点数
    进制二进制:用0,1表示,满2进1。、以0b或者0B开头。八进制用0到7表示,满8进1。以数字0开头。十进制用0到9表示,满10进1十六进制用0到9及A到F表示,此处的A到F不区分大小写,满16进1。以0X或者0x开头。例子如下:inti1=0B10;//二进制0Binti2=010;//八进制0inti3......
  • Java网络编程--Lesson
    一.InetAddress此类是获取网络地址实例的一个类,但是不能通过new来实例化这个类,因为它没有构造器,但是可以通过组合的方式来使用类中的方法拿取主机为localhost的网络地址实例InetAddressaddress=InetAddress.getByName("localhost"); 拿取百度网络地址实例//拿取主机为......
  • java和python混编如何实现服务注册和服务发现呢
    在Java和Python混合编程环境中实现服务注册和发现,你可以考虑以下几种方案:使用服务注册表/服务发现工具服务注册表1.Consul:Consul是一个开源的服务网格解决方案,它提供了服务注册和发现的功能。Consul允许你注册服务并发现其他服务的位置信息。服务发现2.NetflixEureka:Eure......
  • Java8中将List优雅地转Map的多种方式
    在代码开发过程中,我们经常需要将List中的元素根据某一个字段进行分组,这个时候,我们就需要把List来转换成Map来满足我们的业务需求,通常我们转换的场景有以下几种:一、List<Object> 转 Map<String,String>二、List<Object> 转 Map<String,Object> (返回对象本身)三、List<Ob......
  • ArrayList、LinkedList、Vector三种Java集合框架的同义
    ArrayList、LinkedList、Vector是Java集合框架中的三种数据结构,它们的相同点和不同点如下:相同点:都实现了List接口,可以存储有序的元素序列,可以允许重复元素的存在;都支持随机访问(根据元素的索引访问元素),并且访问效率较高;都支持添加、删除、修改等操作,可以动态调整集合中的元素......
  • 【问题记录】【IDEA】启动突然报错 java: Internal error in the mapping processor:
    1 启动报错换了个高版本的IDEA,启动突然报错:2 解决办法添加编译配置参数:-Djps.track.ap.dependencies=false......
  • Java 实现计算机程序
    【引言】计算器是一种常见的工具,用于进行基本数学运算。在计算机科学中,我们可以使用编程语言来模拟和实现一个计算器程序。本文将基于Java语言,设计并实现一个简单的计算器程序。【正文】1.需求分析在设计计算器程序之前,我们需要明确程序的需求。本文设计的计算器程序应满足以......