Java中泛型集合的迭代
我对Java非常陌生,很难理解泛型、泛型的使用方法以及泛型的语法 我上过下面的课Java中泛型集合的迭代,java,loops,generics,Java,Loops,Generics,我对Java非常陌生,很难理解泛型、泛型的使用方法以及泛型的语法 我上过下面的课 class MyCustomArray<T>{ private T[] myArray; // Default Constructor public ArraySet(){ this.myArray= (T[]) new Object[10]; } // Method to get array length public int ge
class MyCustomArray<T>{
private T[] myArray;
// Default Constructor
public ArraySet(){
this.myArray= (T[]) new Object[10];
}
// Method to get array length
public int getSize(){
return this.myArray.length;
}
... some random code
// Method to iterate
public void iterateSomehow(MyCustomArray<? extends T> collection){
// doesn't work
for(T obj: collection){...}
// doesn't work
for(int i=0; i< collection.size(); i++){
T nextObj= collection[i];
}
}
}
您不能直接遍历集合(因为它只是对象),您应该访问myArray。您还可以实现Iterable接口,它允许您这样做
for(T obj: collection){...}
只有数组可以使用
[]
语法进行索引,并且只有实现Iterable
的数组或类可以在增强型for循环的右侧使用(for(T xxx:yyy)
)。您的类不是数组,并且没有实现Iterable
,因此您的两次尝试都不起作用
您的类包含一个数组-myArray
。你只需要重复一遍就可以了。这两个都很好:
for(T obj: collection.myArray){...}
// or
for(int i=0; i< collection.getSize(); i++){
T nextObj= collection.myArray[i];
}
(T obj:collection.myArray){…}?@Sweeper-Wow的
呢。这正是我想做的。@Shevtsov我的代码有一个输入错误:(R[])
应该是(T[])
。我往这边走行吗?哦,对不起。我错了,你可以这样做(用T)。这是一个自定义通用列表的示例(项目在代码中类似于T)@Shevtsov不用担心,输入错误是我的错!谢谢你的链接。
for(T obj: collection.myArray){...}
// or
for(int i=0; i< collection.getSize(); i++){
T nextObj= collection.myArray[i];
}
for(T obj: myArray){...}
for(int i=0; i< getSize(); i++){
T nextObj= myArray[i];
}