[英]Iterating of Generic Collections in Java
我对 Java 非常陌生,并且很难理解 generics、它们的使用方式以及这样做的语法。
我有以下 class
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];
}
}
}
这是针对 class 分配的,它不允许使用像ArrayList
这样的标准类。 我觉得我在这里缺少一些基本的东西,但不知道是什么。
我的方法错了吗? 它只是语法吗?
更多上下文:
我的直接目标是检查给定collection
object 中的每个值(显然是伪代码):
for( int i=0; i < collection.length; i++ ):
value = collection[i];
if (value == badValue):
// whatever
只有 arrays 可以使用[]
语法进行索引,并且只有 arrays 或实现Iterable
的类可以用于增强型 for 循环的右侧( for (T xxx: yyy)
)。 您的 class 不是数组,也没有实现Iterable
,因此您的尝试都没有奏效。
您的 class 包含一个数组 - myArray
。 你可以遍历它。 这两个都很好:
for(T obj: collection.myArray){...}
// or
for(int i=0; i< collection.getSize(); i++){
T nextObj= collection.myArray[i];
}
我也觉得你的方法不应该有参数,而是应该迭代this
(如果这实际上是家庭作业的要求,那就无济于事了):
for(T obj: myArray){...}
for(int i=0; i< getSize(); i++){
T nextObj= myArray[i];
}
您不能直接迭代集合(因为它只是对象),您应该访问 myArray。 你也可以实现 Iterable 接口,它允许你像这样
for(T obj: collection){...}
https://www.geeksforgeeks.org/java-implementing-iterator-and-iterable-interface/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.