Java中泛型集合的循环迭代
我对Java非常陌生,很难理解泛型、泛型的使用方法以及泛型的语法
我上过下面的课
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];
}
}
}
这是针对类赋值的,它不允许使用像ArrayList
这样的标准类。我觉得我错过了一些基本的东西,但不知道是什么
我的方法错了吗?这只是句法上的吗
更多背景:
我的直接目标是检查给定collection
对象中的每个值(显然是psuedo代码):
for( int i=0; i < collection.length; i++ ):
value = collection[i];
if (value == badValue):
// whatever
# 1 楼答案
您不能直接遍历集合(因为它只是对象),您应该访问myArray。您还可以实现Iterable接口,它允许您这样做
https://www.geeksforgeeks.org/java-implementing-iterator-and-iterable-interface/
# 2 楼答案
只有数组可以使用
[]
语法进行索引,只有实现Iterable
的数组或类可以在增强的for循环(for (T xxx : yyy)
)的右侧使用。您的类不是数组,并且没有实现Iterable
,因此您的两次尝试都不起作用您的类包含一个数组-
myArray
。你只需要重复一遍就可以了。这两个都很好:我还觉得你的方法不应该有参数,而应该在
this
上迭代(如果这实际上是家庭作业的一个要求,那么就没办法了):