说我有两个类: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;
}
}
答案 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]