每个循环的java期望对象为类型,而它包含整数数组

时间:2014-02-24 18:57:19

标签: java arraylist

我有一个初学者的Java问题。

我正在填写这样的ArrayList

   private ArrayList getDuplicatesIndexes(char[] letters) {
        ArrayList<int[]> duplicatesIndexes = new ArrayList<int[]>();

        for(int i = 0; i < letters.length; i++ ) {

            for(int j = 0; j < letters.length; j++) {
                System.out.println("compare this");
                System.out.println(letters[i]);
                System.out.println("with this:");
                System.out.println(letters[j]);
                if(letters[i] == letters[j] && i != j) {
                    System.out.println("match!");
                    int[] indexes = new int[2];
                    indexes[0] = i;
                    indexes[1] = j;
                    duplicatesIndexes.add(indexes);
                }
            }
        }

        return duplicatesIndexes;
    }

我想像这样循环:

private void checkForSingularLetters(ArrayList duplicatesIndexes, char[] letters) {
        for(int[] indexes : duplicatesIndexes ){
            System.out.println(indexes[0]);
            ...
        }


}

我无法解释为什么foreach循环期待一个对象,而我确定它充满了int[]

也许有人可以向我解释。感谢。

3 个答案:

答案 0 :(得分:7)

您在方法ArrayList中使用原始格式checkForSingularLetters,这意味着在迭代时需要Object。毕竟,原始ArrayList可以包含任何内容。

在方法参数中使用ArrayList的通用形式:

private void checkForSingularLetters(ArrayList<int[]> duplicatesIndexes, char[] letters) 

答案 1 :(得分:2)

默认情况下,您有一个包含ArrayList的无类型Object - 请尝试按ArrayList<int[]> duplicatesIndexes扩展方法签名,

答案 2 :(得分:1)

在方法名称中,您有一个原始ArrayList。因此,它期望它内部的项目是类型对象。尝试在方法签名中使用ArrayList duplicateIndexes,它应该可以解决您的问题。