数组中的Java泛型最大值

世界终结者

我想实现一个函数,该函数获取数组的最大值,例如double [] {1,2,3}该数组包含可以比较的元素。这是我的实现:

   static <T extends Comparable> T Max( T [] arr ){
        T current = arr[0];
        for ( int i=1;i< arr.length;i++){
            if ( arr[i] > current )
                current = arr[i];
        }
        return current;
    }

但是编译器说二进制运算符'>'中的操作数类型错误

如果(arr [i]> current)

我该如何解决?

疯狂程序员

因为Textends Comparable,您应该compareTo改为使用方法,例如...

static <T extends Comparable<T>> T Max(T[] arr) {
    T current = arr[0];
    for (int i = 1; i < arr.length; i++) {
        if (arr[i].compareTo(current) > 0) {
            current = arr[i];
        }
    }
    return current;
}

JavaDocsComparable#compareTo ...

将此对象与指定对象进行比较。当此对象小于,等于或大于指定的对象时,返回负整数,零或正整数。

实现者必须确保所有x和y的sgn(x.compareTo(y))== -sgn(y.compareTo(x))。(这意味着x.compareTo(y)必须抛出异常,而y.compareTo(x)则抛出异常。)

实现者还必须确保该关系是可传递的:(x.compareTo(y)> 0 && y.compareTo(z)> 0)意味着x.compareTo(z)> 0。

最后,实现者必须确保对于所有z,x.compareTo(y)== 0意味着sgn(x.compareTo(z))== sgn(y.compareTo(z))。

强烈建议(但并非严格要求(x.compareTo(y)== 0)==(x.equals(y))。一般而言,任何实现Comparable接口且违反此条件的类都应明确指出这一事实。推荐的语言是“注意:此类的自然排序与等式不一致”。

在前面的描述中,符号sgn(expression)表示数学符号函数,该函数定义为根据表达式的值为负,零还是正而返回-1、0或1中的一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组中的Java最小值和最大值

来自分类Dev

获取Java数组中n个最大值的索引

来自分类Dev

如何获取Java中泛型数组的值?

来自分类Dev

数组中的最大值(StdClass错误)

来自分类Dev

计算数组中的最大值

来自分类Dev

在numpy数组中传播最大值

来自分类Dev

PHP中数组的最大值

来自分类Dev

如何显示数组中的最大值

来自分类Dev

使用OpenMP的数组中的最大值

来自分类Dev

列表数组中的最大值

来自分类Dev

如何找到数组中的最大值?

来自分类Dev

在java中获取随机生成的数组中的最小值和最大值

来自分类Dev

在Java中获取最大值sql

来自分类Dev

2d数组java中的最小值和最大值

来自分类Dev

在Java 2D数组中查找最大值和最小值

来自分类Dev

Java –在数组中查找最小值和最大值

来自分类Dev

如何在Java中获取二维数组列表的最大值/最小值

来自分类Dev

在 Java 中切换对象数组中的最小值和最大值

来自分类Dev

Java:方法查找位置而不是数组最大值的值

来自分类Dev

输入数组java的最小值和最大值?

来自分类Dev

使用泛型搜索数组中的最大元素

来自分类Dev

获取变量,其值是数组中的最大值

来自分类Dev

从值数组中获取多个最大值

来自分类Dev

从C中的数组打印垃圾值而不是最大值

来自分类Dev

JavaScript中数组的最小值和最大值

来自分类Dev

数组中的最大值和最小值

来自分类Dev

在包含 NaN 值的对象数组中查找最大值

来自分类Dev

用数组中的最小值替换最大值

来自分类Dev

如何使用多线程在Java中查找二维数组的最大值