零基础学Java第二十二天之迭代器 Iterator

发布于:2024-05-25 ⋅ 阅读:(134) ⋅ 点赞:(0)

迭代器 Iterator 的理解和相关集合 使用

1、理解

迭代器(Iterator)是设计模式中的一种,它允许程序员遍历容器(例如列表、集合等)中的元素,而无需了解容器底层的实现细节。在编程中,迭代器提供了一种方法来访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

2、特点

  1. 顺序访问:迭代器通常按照某种顺序(如插入顺序或排序顺序)访问容器中的元素。
  2. 一次访问一个元素:迭代器在给定时刻只指向容器中的一个元素。
  3. 状态保存:迭代器保存了遍历容器时的状态,使得在迭代过程中可以记住当前的位置。
  4. 不修改容器:迭代器通常不修改容器本身,只用于访问元素。

3、使用

1、foreach迭代器(增强for循环)

package com.xx.iterator01;

import java.util.ArrayList;

public class Test01 {
	/**
	 *深入迭代器 -- foreach
	 */
	public static void main(String[] args) {
		 // 创建一个ArrayList集合并添加一些元素
		ArrayList<String> list = new ArrayList<>();
		
        //往集合里面添加元素
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
        //foreach循环
       // 它声明了一个变量element(类型为String),该变量将在每次迭代中存储list中的下一个元素。list是外部定义的,并假定为包含String元素的某种集合(最常见的是List<String>)。
		for (String element : list) {
			System.out.println(element);
		}
		
		/**
		 * 使用foreach循环遍历集合的底层实现:
            Iterator<String> it = list.iterator(); // 获取迭代器  
            String element;  
            //当他有下一个元素时
            while (it.hasNext()) { // 使用while循环模拟for-each循环  
                element = it.next(); // 获取下一个元素  
                System.out.println(element); // 打印元素  
            }
		 */
	}
}

2、Iterator遍历元素

package com.xx.iterator01;

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

public class Test02 {
	/**
	 * 深入迭代器 -- Iterator
	 * 
	 * 深入:Iterator如何遍历元素
	 */
	public static void main(String[] args) {
		// 创建一个ArrayList集合并添加一些元素
		ArrayList<String> list = new ArrayList<>();
		//添加元素
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		//移除元素
		list.remove("bbb");
		//获取迭代器
		Iterator<String> it = list.iterator();
        //当有下一个元素时,继续循环打印
		while(it.hasNext()){
			String element = it.next();
			System.out.println(element);
		}
	}
}

3、使用Iterator遍历元素,遍历到"bbb"时删除该元素

package com.xx.iterator01;

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

public class Test02 {
	/**
	 * 知识点:深入迭代器 -- Iterator
	 * 
	 * 深入:Iterator如何遍历元素
	 */
	public static void main(String[] args) {
		// 创建一个ArrayList集合并添加一些元素
		ArrayList<String> list = new ArrayList<>();
		//添加元素
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		//移除元素
		list.remove("bbb");
		//获取迭代器
		Iterator<String> it = list.iterator();
        //当有下一个元素时,继续循环打印
		while(it.hasNext()){ 
			String element = it.next();
            //如果元素等于bbb,则删除
            if(element.equals("bbb")){
				//list.remove(element);/
				it.remove();
			}
			//开始遍历
           for (String element : list) {
			System.out.println(element);
			}
		}
	}
}

4、使用ListIterator遍历元素

package com.xx.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test04 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator遍历元素
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		ListIterator<String> listIterator = list.listIterator();
		while(listIterator.hasNext()){
			String element = listIterator.next();
			System.out.println(element);
		}
	}
}

5、使用ListIterator遍历元素,遍历到"bbb"时删除

package com.xx.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test05 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator遍历元素,遍历到"bbb"时删除
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		ListIterator<String> listIterator = list.listIterator();
        //当下一个位置有元素时,继续循环
		while(listIterator.hasNext()){
            //将下一个位置的元素,赋值给elelment
			String element = listIterator.next();
            //如果元素输入为bbb,删除bbb
			if(element.equals("bbb")){
				listIterator.remove();
			}
		}
		//开始遍历集合
		for (String element : list) {
			System.out.println(element);
		}
	}
}

6、使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"

package com.xx.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test06 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		ListIterator<String> listIterator = list.listIterator();
		while(listIterator.hasNext()){
			String element = listIterator.next();
            //当元素为bbb时,添加xyz
			if(element.equals("bbb")){
                
				listIterator.add("xyz");
			}
		}
		//遍历集合
		for (String element : list) {
			System.out.println(element);
		}
	}
}

7、使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"

package com.xx.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test07 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		ListIterator<String> listIterator = list.listIterator();
		while(listIterator.hasNext()){
			String element = listIterator.next();
            //当元素为bbb时,设置bbb替换成xyz
			if(element.equals("bbb")){
				listIterator.set("xyz");
			}
		}
		//遍历集合
		for (String element : list) {
			System.out.println(element);
		}
	}
}

8、使用ListIterator指定下标遍历元素

package com.xx.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test08 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator指定下标遍历元素
	 */
	public static void main(String[] args) {
		//新建一个集合
		ArrayList<String> list = new ArrayList<>();
		//添加元素
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
        
		//获取迭代器,从下标为1的开始
		ListIterator<String> listIterator = list.listIterator(1);
		while(listIterator.hasNext()){
			String element = listIterator.next();
			System.out.println(element);
		}
	}
}

9、使用ListIterator倒序遍历元素

package com.qf.iterator01;

import java.util.ArrayList;
import java.util.ListIterator;

public class Test09 {
	/**
	 * 深入迭代器 -- ListIterator
	 * 
	 * 需求:使用ListIterator倒序遍历元素
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		//获取一个迭代器,从集合末尾开始
		ListIterator<String> listIterator = list.listIterator(list.size());
        //当迭代器中,前一个位置有元素时,继续循环
		while(listIterator.hasPrevious()){
            //将前一个元素赋值给element
			String element = listIterator.previous();
			System.out.println(element);
		}
	}
}