Java 如何遍历对象';谁的名单?
我目前在Java中面临这个问题,假设我有一个类Java 如何遍历对象';谁的名单?,java,design-patterns,iterator,Java,Design Patterns,Iterator,我目前在Java中面临这个问题,假设我有一个类ListOfTasks: public class ListOfTasks { private Point startingPoint; ArrayList<Task> tasks; } 公共类任务列表{ 专用点启动点; 数组列表任务; } 在另一个类中,我想通过调用ListOfTasks直接遍历数组列表任务,而不是先检索任务然后遍历它。如果我理解您的问题,类似的方法应该可以: for(int i=0;ix.findT
ListOfTasks
:
public class ListOfTasks {
private Point startingPoint;
ArrayList<Task> tasks;
}
公共类任务列表{
专用点启动点;
数组列表任务;
}
在另一个类中,我想通过调用ListOfTasks直接遍历数组列表
任务
,而不是先检索任务然后遍历它。如果我理解您的问题,类似的方法应该可以:
for(int i=0;i
有很多方法可以做到这一点:--
在ListOfTasks POJO中编写GETTER/SETTER
public class ListOfTasks {
private Point startingPoint;
ArrayList<Task> tasks = new ArrayList<>();
GETTER/SETTER
}
公共类任务列表{
专用点启动点;
ArrayList tasks=新建ArrayList();
吸气剂/塞特
}
然后
listoftask list=newlistoftask();
对于(inti=0;i您所采用的方法是错误的,因为属性“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);
List List=new ArrayList();
//在这里填充列表。。。
找到的任务=lists.stream().filter(x=>x.findTask()).filter(x=>x!=null.findAny().orElse(null);
只是不要为任务公开getter。
在ListOfTasks类中创建一个方法,如下所示:
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);
}
for(int i=0;i可以通过实现返回数组列表的迭代器来实现:
公共类ListOfTasks实现Iterable{
专用点启动点;
数组列表任务;
公共迭代器迭代器(){
return tasks!=null?tasks.iterator():Collections.emptyIterator();
}
}
然后可以使用for-each进行迭代
listoftask list=newlistoftask();
//添加一些任务等。。。
用于(任务:列表){
//使用任务
}
//或
list.forEach(任务->{
//使用任务
});
for(int i=0 ;i<listOfTasks.size();i++){
// now access Task like this
listOfTasks.get(i);
}