我有一个ArrayList,其元素是数组。例如[[2,3,4],[5,6,7],[8,9,10]]
。我需要将数组元素ex [1,2,3]
传递给只接受数组的方法。
public ArrayList<Integer[]> arrayList;
//some code
for(int i = 0; i < arrayList.size(); i++) {
Integer[] elementArray = arraylist.get(i);
Integer = methodTakesOnlyArrays(elementArray);
// more code...
这会返回java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.Integer;
我该如何纠正?
由于
答案 0 :(得分:1)
除了您的代码包含一些语法错误这一事实外,以下代码编译并正确执行:
public void first(){
ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
arrayList.add(new Integer[]{2,3,4});
arrayList.add(new Integer[]{5,6,7});
arrayList.add(new Integer[]{8,9,10});
//some code
for(int i = 0; i < arrayList.size(); i++) {
Integer[] elementArray = arrayList.get(i);
Integer integer = methodTakesOnlyArrays(elementArray);
// more code...
}
}
答案 1 :(得分:0)
正如我已经编写了一些你所描述的代码,它运行得恰到好处。我使用的是JDK1.6.0_32。
这是我的代码:
public static void main(String[] args) {
ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
Integer[] elementArrayA = { 1, 2, 3 };
Integer[] elementArrayB = { 4, 5, 6 };
arrayList.add(elementArrayA);
arrayList.add(elementArrayB);
for (int i = 0; i < arrayList.size(); ++i) {
Integer[] elementArray = arrayList.get(i);
System.out.println(arrayToString(elementArray));
}
}
public static String arrayToString(Integer[] inputArray) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("[");
boolean isFirst = true;
for (Integer elementInteger : inputArray) {
if (isFirst) {
stringBuffer.append(String.valueOf(elementInteger));
isFirst = false;
} else {
stringBuffer.append(", ");
stringBuffer.append(String.valueOf(elementInteger));
}
}
stringBuffer.append("]");
return stringBuffer.toString();
}
答案 2 :(得分:0)
public ArrayList<Integer[]> arrayList;
//initialize the arrays and add them to the arraylist
for(Integer[] in : arrayList) {
Integer result = methodTakesOnlyArrays(in);
// more code...
}