java for each循环需要对象作为类型,而它包含一个整数数组
我有一个Java初学者的问题 我正在填写一个java for each循环需要对象作为类型,而它包含一个整数数组,java,arraylist,Java,Arraylist,我有一个Java初学者的问题 我正在填写一个ArrayList,如下所示: private ArrayList getDuplicatesIndexes(char[] letters) { ArrayList<int[]> duplicatesIndexes = new ArrayList<int[]>(); for(int i = 0; i < letters.length; i++ ) { for
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[]
也许有人能给我解释一下。谢谢。您在方法
checkForSingularLetters
中使用了ArrayList
的原始形式,这意味着迭代时需要对象。毕竟,原始ArrayList
可以包含任何内容
在方法参数中使用ArrayList
的一般形式:
private void checkForSingularLetters(ArrayList<int[]> duplicatesIndexes, char[] letters)
private void checkForSingularLetters(数组列表重复索引,字符[]个字母)
您有一个默认包含对象的非类型化ArrayList
——尝试通过ArrayList Duplicates扩展方法签名索引,在方法名称中,您有一个原始ArrayList。因此,它希望其中的项是对象类型。尝试在方法签名中使用ArrayList duplicateIndexes,它应该可以解决您的问题。所以基本上我没有明确告诉参数ArrayList类我想要一个整数数组作为类型?这导致将is解释为“某种类型”的对象?是的,当使用类的原始形式时,所有方法的签名都会变成它们自己的类型擦除,这意味着迭代器不会返回int[]
,而是返回对象
。很好,感谢您的评论和回答,我们会尽快批准它。最后,有人能给我指出一些关于泛型的更深入的有用文章吗?在你最喜欢的搜索引擎中搜索“java泛型教程”。。。已经这样做了,我想知道是否有人有一个很好的回复。但没关系。