专业编程基础技术教程

网站首页 > 基础教程 正文

第16天|Java入门有野,迭代器Iterator

ccvgpt 2024-08-07 18:57:27 基础教程 9 ℃

为了统一访问Java数据结构的元素,Java提供了迭代器Iterator。它不是一个集合,而是一种用于访问集合的方法。迭代器Iterator(实例it)的两个基本操作是next 、hasNext 和 remove。

调用it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。调用it.hasNext() 用于检测集合中是否还含有元素。调用it.remove()将迭代器返回的元素删除。

第16天|Java入门有野,迭代器Iterator

16.1 数据迭代

数据列表,有动态数组ArrayList、有链表LinkedList、有HashSet,它们都可通过迭代器Iterator循环获取元素并支持remove()元素。

/*
 * 老陈说编程
 * Iterator讲解
 */

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.HashSet;
import java.util.Iterator;

public class IteratorIntro {
    public static void main(String[] args) {
        ArrayList<String> a = new ArrayList<>();
        a.add("牛魔王");
        a.add("孙悟空");
        a.add("猪八戒");
        // 获取迭代器
        Iterator<String> it = a.iterator();
        // 输出集合中的所有元素
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("-------------------");
        LinkedList<Integer> l = new LinkedList<>();
        l.add(100);
        l.add(98);
        l.add(75);
        l.add(59);
        l.add(45);
        // 获取迭代器
        Iterator<Integer> i = l.iterator();
        while (i.hasNext()) {
            //过滤掉小于60的数据
            if (i.next() < 60) {
                i.remove();
            }
        }
        System.out.println(l);
        System.out.println("-------------------");
        HashSet<Double> h = new HashSet<>();
        h.add(3.14);
        h.add(3.141);
        h.add(3.1415);
        h.add(3.14159);
        // 获取迭代器
        Iterator<Double> j = h.iterator();
        // 输出集合中的所有元素
        while (j.hasNext()) {
            System.out.println(j.next());
        }
    }
}

输出结果

牛魔王
孙悟空
猪八戒
-------------------
[100, 98, 75]
-------------------
3.14
3.14159
3.141
3.1415

16.2 键值迭代

在HashMap中,keySet()方法返回的是集合,所以也可以用迭代器Iterator访问;values访问的也是集合,照样可用Iterator进行访问。

/*
 * 老陈说编程
 * Iterator讲解
 */

import java.util.HashMap;
import java.util.Iterator;

public class IteratorIntro {
    public static void main(String[] args) {
        HashMap<Integer, String> grade = new HashMap<Integer, String>();
        // 添加键值对
        grade.put(1, "1班最棒");
        grade.put(2, "2班最胖");
        grade.put(3, "3班最浪");
        Iterator<Integer> kt = grade.keySet().iterator();
        // 输出集合中的所有key
        while (kt.hasNext()) {
            System.out.println(kt.next());
        }
        // 输出集合中的所有value
        Iterator<String> vt = grade.values().iterator();
        while (vt.hasNext()) {
            System.out.println(vt.next());
        }
    }
}

输出结果

1
2
3
1班最棒
2班最胖
3班最浪

好了,有关Java迭代器Iterator内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。

#Java##APP##鸿蒙APP##Web##Spring#

Tags:

最近发表
标签列表