我在代码中的其他地方使用了一个名为 jobsList 的静态 arrayList。我想使用静态方法向其添加元素。由于某种原因,它会覆盖 jobList,以便每次我添加一个元素时,第一个元素就是我刚刚添加的元素,没有其他元素。就像这样,没有添加其他元素。相关代码如下:
public static ArrayList<Job> jobList = null;
public JobSchedule() {
jobList = new ArrayList<Job>(10);
}
public static Job addJob(int time) {
System.out.println("Adding job " + time);
Job j = new Job(time);
jobList.add(j);
System.out.println("Current joblist size: " + jobList.size());
System.out.println("First element: " + jobList.get(0).weight);
return j;
}
打印行的输出如下所示:
Adding job 8
Current joblist size: 1
First element: 8
Adding job 5
Current joblist size: 1
First element: 5
理想情况下,每次添加它时都应该增加大小并将作业放在正确的索引处,所以我不确定为什么数组列表被覆盖。
最佳答案
我认为你每次都会调用构造函数,
JobSchedule(){
jobList = new ArrayList<Job>(10);
}
每次调用它时都会创建一个新的 ArrayList。
不需要构造函数。做这样的事情:
public static ArrayList<Job> jobList = null;
public static Job addJob(int time) {
if (jobList == null) {
jobList = new ArrayList<Job>(10);
}
System.out.println("Adding job " + time);
Job j = new Job(time);
jobList.add(j);
System.out.println("Current joblist size: " + jobList.size());
System.out.println("First element: " + jobList.get(0).weight);
return j;
}
关于java - 添加到静态 ArrayList 只是覆盖第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604193/