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);