作为一般概念,假设我们有一个compareTo方法,它返回1,0或-1。
如何使用compareTo方法使用迭代器查找数组中的最大值?
答案 0 :(得分:3)
简单地:
Iterator<E> it = collection.iterator;
E max = null;
while(it.hasNext()) {
if(max == null) {
max = it.next();
} else {
e = it.next();
if(e.compareTo(max) > 0) {
max = e;
}
}
}
答案 1 :(得分:1)
如果您只是想在数组中找到最大元素(没有显式使用迭代器和compareTo),那么您可以将数组转换为Collection或Stream:
Integer[] objectArray = {3,66,4,22,4};
List<Integer> objectList = Arrays.asList(objectArray);
System.out.println(Collections.max(objectList));
int[] primitiveArray = {3,66,4,22,4};
IntStream intStream = Arrays.stream(primitiveArray);
System.out.println(intStream.max().getAsInt());
Collections.max
使用迭代器和compareTo引擎盖(通过阅读其源代码可以看到),但第二种方式不是(因为它使用基元)。