当我在Java中创建数组时 - int array []和array = new int [some number] -
如果我不知道它将保留多少个值以便我有足够的空间,我该如何构建呢?
答案 0 :(得分:10)
在这种情况下,您可能想要使用ArrayList
或其他一些动态集合。
您不必提及ArrayList的大小,您可以在运行时添加任意数量的元素。大小动态增长。
声明
List arrayList = new ArrayList();
如果使用JDK 1.5或更高版本,那么您还可以提及此列表将包含的元素类型。
List<String> arrayList = new ArrayList<String>();
http://www.roseindia.net/java/beginners/array_list_demo.shtml
答案 1 :(得分:0)
ArrayList是最简单的答案,但是如果你想要一种更节省内存的方法,你可以使用TIntArrayList(包装int[]
)
答案 2 :(得分:0)
对于增长数组,请使用ArrayList
。
如果数组应包含基本类型,则可以将它们包装起来:
ArrayList<Integer> array = new ArrayList<Integer>();
array.add(new Integer(4));
array.add(new Integer(-5));
array.add(new Integer(4));
array.add(new Integer(2));
但是,当值发生很大变化时,您会继续实例化并丢弃Integer实例,因为它是不可变的。它的表现也不是很高。
我的解决方案:使用公共值字段自己创建一个包装器。
这是我的包装器,它也适用于TreeMap
和类似的东西,它们按照自然顺序对项目进行排序。
public class MyInteger implements Comparable<MyInteger>
{
public int value;
public MyInteger(int value)
{
this.value = value;
}
@Override
public String toString()
{
return Integer.toString(value);
}
@Override
public int compareTo(MyInteger o)
{
return value - o.value;
}
}
现在你可以做类似的事情:
array.get(2).value++;