Java 使用迭代器返回列表中最大对象位置的通用方法

Java 使用迭代器返回列表中最大对象位置的通用方法,java,generics,generic-method,Java,Generics,Generic Method,我正在制作一个通用方法,可以获取任何类型的列表,并找到最大值在该列表中的位置,这是我制作的一个更大程序的一部分,我制作了一个迭代器,用于遍历列表。我快完成了,但我有两个问题:1。我无法在泛型方法中初始化迭代器。2.无法从列表中获取第一个值。 我不擅长解释,而是在代码中注释了问题区域。非常感谢您的帮助 一般方法: public static <T> int max(List<T> list, Comparator<? super T> c) {

我正在制作一个通用方法,可以获取任何类型的列表,并找到最大值在该列表中的位置,这是我制作的一个更大程序的一部分,我制作了一个迭代器,用于遍历列表。我快完成了,但我有两个问题:1。我无法在泛型方法中初始化迭代器。2.无法从列表中获取第一个值。 我不擅长解释,而是在代码中注释了问题区域。非常感谢您的帮助

一般方法:

 public static <T> int max(List<T> list, Comparator<? super T> c)
  {


      if (list == null)
      {
          throw new NoSuchElementException();
      }

      int m = 0; // index max value
      T maxvalue = list[0]; // max value (error: How do it get the value of the list here?)
      int counter = 0;

      Iterator<T> it = new DobbeltLenketListeIterator(); //( error: cannot be referenced from a static context)

      while(it.hasNext()) 
      {
          counter++;

          if (c.compare(it.next(), maxvalue) > 0)
          {
              maxvalue = it.next;

              m = counter;
          }


      }


      return m;

  }
publicstaticintmax(列表,比较器
  • 将内部类标记为
    静态

    私有静态类DoublelinkedlistIterator实现迭代器

  • 您试图以数组元素的形式检索列表的第一个元素。您应该这样编写它:

    T maxvalue=list.get(0);


  • 尝试进行以下两项更改:

    使迭代器类成为静态的,并给它一个泛型参数
    T

    private static class DoublelinkedlistIterator<T> implements Iterator<T>
    
    私有静态类DoublelinkedlistIterator实现迭代器
    
    然后,当您使用它时,将类型传递给它:

    Iterator<T> it = new DobbeltLenketListeIterator<T>(); 
    
    Iterator it=new-DobbeltLenketListeIterator();
    
    这是一个困难的问题,但我得到了一些帮助,答案是: Iterator it=list.Iterator()

    T maxvalue=it.next()


    谢谢你们,我很感激你们的回答!

    列表上的问题没问题,谢谢,但问题和上面一样。迭代器中的很多行给了我类定义更改的错误。错误是什么意思?你能发布你的迭代器类未编译的代码吗?如果你的问题已经“回答”,你应该“接受”最好的答案,即使是你自己的。
    Iterator<T> it = new DobbeltLenketListeIterator<T>();