如何将ArrayList <integer []>的元素传递给只接受数组的方法?</integer []>

时间:2012-05-16 11:22:20

标签: java arraylist

我有一个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;

我该如何纠正?

由于

3 个答案:

答案 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... 
}