继续在Java中引用多个类的数组

时间:2017-07-11 09:13:29

标签: java

说我有两个类:players.java和schedules.java

我有一个在players.c中定义的ArrayList(动态大小),我希望通过schedules.c中的一个函数来传递,该函数将一个元素添加到此ArrayList中。如何在不创建新数组的情况下执行此操作,例如?:

ArrayList<Integer> nums = new ArrayList<Integer>();
nums = schedules.addNums(nums);

问题是,在我的程序中,我必须多次遍历addNums等函数,这似乎很浪费。

我读过我可以声明:

public static ArrayList<Integer> nums = new ArrayList<Integer>();

这样在文件schedules.c中,我可以修改players.nums,但我已经读过其他使用静态变量的stackoverflow帖子是不好的做法。我真正想要的是某种功能,类似于将指针传递给c中的函数并修改该ArrayList。

编辑了一些代码:

在Players.java中

public class Players {
    public static void main {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(1); // add an element to nums
        System.out.println(''+nums.size()); // should be 1
        nums = schedules.addNums(nums);
        System.out.println(''+nums.size()); // should be 2
        nums = schedules.addNums(nums);
        System.out.println(''+nums.size()); // should be 3
    }
}

在Schedules.java中

public class Schedules {
    public static ArrayList<Integer> addNums(ArrayList<Integer> nums) {
        nums.add(2);
        return nums;
    }
}

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了该任务,但这里的示例不会创建ArrayList的新实例。它正在使用传递参考。

class Players {
    private List<Integer> nums = new ArrayList<>();

    public List<Integer> getNums() {
        return nums;
    }
}

class Schedules {
    public void addNums(List<Integer> l) {
        // add nums
        l.add(1);
        l.add(2);
        l.add(4);
    }
}

然后你可以做这样的事情::

    Players players = new Players();
    Schedules schedules = new Schedules();

    schedules.addNums(players.getNums());   // after this: players.nums=[1, 2, 4]

    schedules.addNums(players.getNums());   // after this: players.nums=[1, 2, 4, 1, 2, 4]