ArrayList<>,在创建另一个对象时添加对象
ArrayList<>, adding Objects on creation of another Object
我正在尝试将一系列一个对象添加到 ArrayList 中的另一个对象。
在本例中,我有 "Task",这是一系列对象类型 "SubTask"。每当用户按下特定按钮时,它应该向任务添加另一个子任务。我在构造函数中执行此操作时遇到了一些问题,并且通常将 SubTask 的 ArrayList 传输到 Task。最短时间和最长时间的计算我自己大概能算出来
public class Task {
//our Task has a name, a number of SubTasks, cues and two calculated times (min and max)
public String TaskName;
public int calculatedMaxTime; public int calculatedMinTime; public int subtasks;
public boolean cueEt; public boolean cueTo;
//it has an ArrayList of SubTasks
ArrayList<SubTask> myList = new ArrayList<SubTask>();
//lets make a task
public Task(String setName, int calcTimeMin,int calcTimeMax,
int calcSubs, boolean setCueOne, boolean setCueTwo) {
//calcTimeMin = myList.
//calcTimeMax =
//we need to add subtasks in the constructor somehow
//we need these subtasks to be specific to the task
TaskName = setName;
//set the Task's variables
calculatedMaxTime = calcTimeMax; calculatedMinTime = calcTimeMin; subtasks = calcSubs;
cueEt = setCueOne; cueTo = setCueTwo;
}
}
public class SubTask {
//vores underopgavbe har et navn, en minimum og en max tid
String Name;
int minTime; int maxTime;
public SubTask(String setSubName, int setMinTime, int setMaxTime) {
Name = setSubName;
minTime = setMinTime; maxTime = setMaxTime;
}
}
请原谅这里和那里的丹麦语,我还没有清理我的代码。
编辑(如果看不到,请提问): 如何将(用户定义的)子任务添加到用户正在创建的任务中?我是使用构造函数还是为其定义方法?
有几种方法可以将子任务传递到任务数组中。最明显的是向任务 class 添加一个 addSubTask(Subtask)
方法,然后在创建任务的任何代码中调用它。
在主代码中
Task task = new Task(args...); //put real args in actual code
//do stuff
public void onButtonPress(){
SubTask subtask = new SubTask(args...); //put real args in actual code
task.addSubTask(subtask);
}
任务中
public class Task{
//already existing code
public void addSubTask(SubTask subtask){
myList.add(subtask);
}
}
或者,您可以将一个 ArrayList<SubTask>
对象添加到 Task 构造函数的参数中,这样您就可以一次传递一大堆子任务 - 尽管无法在 Task 完成后添加新的子任务建。这可能与先前的解决方案相结合,以允许您在对象创建结束后添加 SubTasks。
你可以这样试试:
ArrayList<Task> taskList = new ArrayList<Task>();
Task task = new Task(...);
SubTask subtask1 = new SubTask(...);
task.myList.add(subtask1);
SubTask subtask2 = new SubTask(...);
task.myList.add(subtask2);
SubTask subtask3 = new SubTask(...);
task.myList.add(subtask3);
...
...
taskList.add(task);
我正在尝试将一系列一个对象添加到 ArrayList 中的另一个对象。 在本例中,我有 "Task",这是一系列对象类型 "SubTask"。每当用户按下特定按钮时,它应该向任务添加另一个子任务。我在构造函数中执行此操作时遇到了一些问题,并且通常将 SubTask 的 ArrayList 传输到 Task。最短时间和最长时间的计算我自己大概能算出来
public class Task {
//our Task has a name, a number of SubTasks, cues and two calculated times (min and max)
public String TaskName;
public int calculatedMaxTime; public int calculatedMinTime; public int subtasks;
public boolean cueEt; public boolean cueTo;
//it has an ArrayList of SubTasks
ArrayList<SubTask> myList = new ArrayList<SubTask>();
//lets make a task
public Task(String setName, int calcTimeMin,int calcTimeMax,
int calcSubs, boolean setCueOne, boolean setCueTwo) {
//calcTimeMin = myList.
//calcTimeMax =
//we need to add subtasks in the constructor somehow
//we need these subtasks to be specific to the task
TaskName = setName;
//set the Task's variables
calculatedMaxTime = calcTimeMax; calculatedMinTime = calcTimeMin; subtasks = calcSubs;
cueEt = setCueOne; cueTo = setCueTwo;
}
}
public class SubTask {
//vores underopgavbe har et navn, en minimum og en max tid
String Name;
int minTime; int maxTime;
public SubTask(String setSubName, int setMinTime, int setMaxTime) {
Name = setSubName;
minTime = setMinTime; maxTime = setMaxTime;
}
}
请原谅这里和那里的丹麦语,我还没有清理我的代码。
编辑(如果看不到,请提问): 如何将(用户定义的)子任务添加到用户正在创建的任务中?我是使用构造函数还是为其定义方法?
有几种方法可以将子任务传递到任务数组中。最明显的是向任务 class 添加一个 addSubTask(Subtask)
方法,然后在创建任务的任何代码中调用它。
在主代码中
Task task = new Task(args...); //put real args in actual code
//do stuff
public void onButtonPress(){
SubTask subtask = new SubTask(args...); //put real args in actual code
task.addSubTask(subtask);
}
任务中
public class Task{
//already existing code
public void addSubTask(SubTask subtask){
myList.add(subtask);
}
}
或者,您可以将一个 ArrayList<SubTask>
对象添加到 Task 构造函数的参数中,这样您就可以一次传递一大堆子任务 - 尽管无法在 Task 完成后添加新的子任务建。这可能与先前的解决方案相结合,以允许您在对象创建结束后添加 SubTasks。
你可以这样试试:
ArrayList<Task> taskList = new ArrayList<Task>();
Task task = new Task(...);
SubTask subtask1 = new SubTask(...);
task.myList.add(subtask1);
SubTask subtask2 = new SubTask(...);
task.myList.add(subtask2);
SubTask subtask3 = new SubTask(...);
task.myList.add(subtask3);
...
...
taskList.add(task);