我有一个初学者的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[]
也许有人可以向我解释。感谢。
答案 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,它应该可以解决您的问题。