java—如何遍历对象的列表?

tgabmvqs  于 2021-07-06  发布在  Java
关注(0)|答案(5)|浏览(202)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

上个月关门了。
改进这个问题
我目前在java中面临这个问题,假设我有一个类 ListOfTasks :

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

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

ds97pgxw

ds97pgxw1#

您所采用的方法是错误的,因为属性“tasks”的职责属于类listoftasks。
因此,您必须更改方法,遍历另一个类中的listoftasks示例集,并调用一个方法

public Task findTask() {
     // do something here to find the Task you were looking for, or return null
}

所以另一个类应该是这样的:

List<ListOfTasks> lists = new ArrayList<>();
// populate list here ...
Task found = lists.stream().filter(x => x.findTask()).filter(x => x != null).findAny().orElse(null);
pxiryf3j

pxiryf3j2#

您可以通过实现 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
});
pengsaosao

pengsaosao3#

有很多方法可以做that:--
在listoftasks pojo中编写getter/setter。

public class ListOfTasks {
    private Point startingPoint;
    ArrayList<Task> tasks = new  ArrayList<>();

    GETTER/SETTER
}

然后

ListOfTasks list = new ListOfTasks();

for(int i=0 ;i<list.getTask().size();i++){

list.getTasks().get(i);
}
ttp71kqs

ttp71kqs4#

只是不要为任务暴露getter。在ListOftTasks类中创建一个方法,如下所示:

public Task get(int index){
    return list.get(index);
}
public int size(){
    return list.size();
}

现在像这样使用listoftasks

for(int i=0 ;i<listOfTasks.size();i++){

    // now access Task like this
    listOfTasks.get(i);
}
of1yzvn4

of1yzvn45#

如果我理解你的问题,这样的方法应该行得通:

for (int i = 0; i < listOfTasksObject.tasks.size(); i++) {
    Task task = listOfTasksObjects.tasks.get(i);
    // Now you can work with task...
}

相关问题