返回2D数组Java最大值的方法

public static <E extends Comparable<E>> E getMaxElement(E[][] list){
    E theMaximumElement = new E();
    for (int i = 0; i <list.length ; i++) {
        for (int j = 0; j <list[i].length ; j++) {

            if(theMaximumElement.compareTo(list[i][j]))
                theMaximumElement = list[i][j];
        }
    }
    return theMaximumElement;
}

我怎么能很好地编写此代码?是真的吗?

我想找到最大的元素。我不擅长Java泛型。

colinhmj429 回答:返回2D数组Java最大值的方法

您的代码中有两个问题:

  • Comparable::compareTo方法不会返回int,而是返回new E()。这是该方法的说明:

    比较其两个参数的顺序。当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。 在前面的描述中,符号sgn(expression)表示数学符号函数,该函数定义为根据表达式的值为负,零还是正返回-1、0或1中的一个。

  • 您无法实例化通用对象,例如public static <E extends Comparable<E>> E getMaxElement(E[][] list) { E theMaximumElement = list[0][0]; // initial value (the first one) for (final E[] array : list) { for (final E e : array) { if (theMaximumElement.compareTo(e) < 0) // comparison is against 0 theMaximumElement = e; // setting the new maximum value } } return theMaximumElement; // returning it } 。选中Instantiating generics type in java

这是一种方法:

list[0][0]

唯一的条件是元素Optional<E>存在,即数组不为空。否则,您应该修改解决方案以使用Optional<E> optionalmaximum = Arrays.stream(list) // Stream<E[]> .flatMap(Arrays::stream) // Stream<E> .max(Comparator.naturalOrder()); // Optional<E> ,因为并非总是可以找到最大值(空数组)。

从Java 8开始,有一种使用处理此类用例的简单方法:

{{1}}
,

这是我的版本:

dtype=float
本文链接:https://www.f2er.com/2406711.html

大家都在问