首页 > 解决方案 > 如何遍历对象的列表?

问题描述

我目前在 Java 中遇到这个问题,假设我有一个类ListOfTasks

public class ListOfTasks {
    private Point startingPoint;
    ArrayList<Task> tasks;
}

在另一个类中,我想通过调用 ListOfTasks 直接遍历数组列表tasks,而不是先检索任务然后再遍历它。

标签: javadesign-patternsiterator

解决方案


您可以通过实现Iterable返回数组列表的迭代器来做到这一点:

public class ListOfTasks implements Iterable<Task> {
    private Point startingPoint;
    ArrayList<Task> tasks;

    public Iterator<Task> iterator() {
        return tasks != null ? tasks.iterator() : Collections.emptyIterator();
    }
}

然后,您可以使用 for-each 进行迭代

ListOfTasks list = new ListOfTasks();
// add some tasks, etc...

for (Task task : list) {
    // use task
}

// or

list.forEach(task -> {
    // use task
});

推荐阅读