有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

共 (2) 个答案

  1. # 2 楼答案

    只有数组可以使用[]语法进行索引,只有实现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];
    }
    

    我还觉得你的方法不应该有参数,而应该在this上迭代(如果这实际上是家庭作业的一个要求,那么就没办法了):

    for(T obj: myArray){...}
    
    for(int i=0; i< getSize(); i++){
        T nextObj= myArray[i];
    }