我有以下代码,它根据位置采用整数并将其存储在布尔数组中。我有一个方法包括允许用户输入更多的数字到数组,但如果数字大于数组大小,那么我需要增加大小。我知道,只要改变了每个位置的数据,就不能对数组做很多事情。有没有快速的方法使它更大或我可以使用arraylists来保持阵列大小的变化?
public class ISet {
public int max;
boolean[] numArray;
ISet(int a) {
this.size = a;
this.numArray = new boolean[size];
}
public void include(int n) {
if (n > size) {
this.size = n;
numArray[n]=true;
}
else
numArray[n]=true;
}
答案 0 :(得分:2)
如果你想让自己变得更大,可以使用Arrays.copyOf(numArray, newLength)
将数组复制到指定长度的新数组中,如果新长度比原始长度长,则在末尾添加falses。
否则您可以使用ArrayList。
答案 1 :(得分:1)
您应该使用ArrayList。
普通数组在Java中具有固定的大小。
答案 2 :(得分:1)
你可以简单地使用一个ArrayList,虽然它必须是ArrayList<Boolean>
而不是boolean(原始数据类型)。可能是最简单的解决方案。
另一种选择是创建一个新的更大的数组,并在超出当前数组的大小时将当前数组中的每个元素复制到新数组。
答案 3 :(得分:0)
对于“普通”代码,您应该使用ArrayList
代替。
对于使用极大数组的应用程序,数组需要比ArrayList少得多的内存,因为一个Object需要比原语多4倍(16字节)的内存。
对于这种特殊情况,您可以使用Arrays.copyOf()
将内容复制到新的更大的数组中。
另请参阅ArrayList.java