java - 添加到静态 ArrayList 只是覆盖第一个元素

标签 java arraylist static

我在代码中的其他地方使用了一个名为 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/

相关文章:

c - 打印语句如何在这里执行四次?

C++ 多线程 - 线程安全代码

java - 在 Weblogic Server 中查看已部署的应用程序

java - 如何在 Mac 上从 ant 启动 shell 脚本?

java - 如何让 JPanel 在调整面板大小时记住用户绘制的图形?

java - 从另一个列表初始化列表的一行

java - 并发数组列表

java - 如何查明数组列表是否缺少数组中的一个且仅一个元素?