在2d数组中找到最小值

时间:2018-01-26 13:43:52

标签: java algorithm generics multidimensional-array data-structures

我想创建一个返回二维数组最小值的泛型方法。我将使用以下代码:

public static <T extends Comparable<T>> T Max(T[][]stuff) {
    T min = stuff[0][0];
    for (T[] row : stuff) {
        for (T elt : row) {
            if (elt.compareTo(min) > 0) {
                max = elt;
            }
        }
    }
    return max;
}

但是代替max,我需要找min,我必须使用签名:

public static E Min<E>(E[,] matrix) where E : IComparable<E>

很抱歉,如果这听起来像是家庭作业,但我无法绕过它。非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是

    public static <T extends Comparable<T>> T min(T[][]stuff) {
    T min = stuff[0][0];
    for (T[] row : stuff) {
        for (T elt : row) {
            if (elt.compareTo(min) < 0)
                min = elt;
        }
    }

    return min;
}

答案 1 :(得分:0)

功能方法:

Optional<T> min = Arrays.stream(stuff)
            .flatMap(Arrays::stream)
            .min(Comparable::compareTo);