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