Java 生成整数的可变长度数组
我想要一个长度可变的整数数组。显而易见的选择是使用ArrayList,但是我可以为诸如Java 生成整数的可变长度数组,java,arrays,arraylist,Java,Arrays,Arraylist,我想要一个长度可变的整数数组。显而易见的选择是使用ArrayList,但是我可以为诸如 ArrayList<int> myArray=new ArrayList<int>(); 对我来说,对于一个简单的整数来说,这似乎是一个非常笨拙的表达式——特别是当它出现在一个表达式中两次时。似乎(大多数)可用于Integer类的方法都是绝对冗余的。举两个例子 static int compare(int a, int b) 非常令人难以置信的是,根据文档,这个方法返回a-b st
ArrayList<int> myArray=new ArrayList<int>();
对我来说,对于一个简单的整数来说,这似乎是一个非常笨拙的表达式——特别是当它出现在一个表达式中两次时。似乎(大多数)可用于Integer类的方法都是绝对冗余的。举两个例子
static int compare(int a, int b)
非常令人难以置信的是,根据文档,这个方法返回a-b
static Integer valueOf(int a)
返回整数a的整数实例。有人能给我举个例子吗
new Integer(a)
没有获得完全相同的结果?不,不可能将基元类型用作泛型类型。我建议您使用ArrayList,并避免在这种情况下使用基元类型 一旦创建了数组,就不能更改其大小。你必须把它分配得比你认为需要的更大 或 接受必须将其重新分配到新的更大阵列并将数据从旧阵列复制到新阵列的开销:
System.arraycopy(oldItems, 0, newItems, 0, 10);
但是使用ArrayList要简单得多。方法1:(不推荐)
您可以这样做,但这会使代码加倍,效率低下:
int[] a;
//get size (from command line maybe ow whatever method you want)
最初可以设置大小为0,例如。您正在从arraylist
传输值,因此您必须编写:
while(itr.hasNext()){
size++;} //itr is an object of Iterator
int i=0;
a=new int[size];
// then loop again to store values
while(itr.hasNext()){
a[i]=itr.next();
i++;}
方法2:
或者您可以使用ArrayList
,而不使其笨拙,如下所示:
ArrayList al=新的ArrayList()
然后,您可以将整数对象声明为volatile,并像处理基元类型一样对其执行操作
方法3:(不推荐)
或者干脆写:
ArrayList al=new ArrayList();//ignore the warning about <E>
int x=2;
al.add(2);
希望这有帮助。长度是可变的,如?可变?你说的笨拙是什么意思?因为长度在运行时是不确定的,长度需要动态更改,以便从数组中获取整数值以用于表达式中,以了解我的观点-但是请继续讨论并回答问题使用原语几乎总是比使用对象等价物更“笨拙”?我不明白你为什么坚持要把一个正方形块锤成一个圆形。声明变量volatile有什么帮助?
while(itr.hasNext()){
size++;} //itr is an object of Iterator
int i=0;
a=new int[size];
// then loop again to store values
while(itr.hasNext()){
a[i]=itr.next();
i++;}
ArrayList al=new ArrayList();//ignore the warning about <E>
int x=2;
al.add(2);
public static int[] convertIntegers(List<Integer> integers)
{
int[] ret = new int[integers.size()];
for (int i=0; i < ret.length; i++)
{
ret[i] = integers.get(i).intValue();
}
return ret;
}