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