在java中使用Infinity避免双重类型的最佳方法是什么?

在java中使用Infinity避免双重类型的最佳方法是什么?,java,integer,double,Java,Integer,Double,如果我想有一个目标整数数字,我想初始化为无穷大,我是否必须首先使用双精度类型 Integer min_val(List<Integer> nums) { double min_so_far = Double.POSITIVE_INFINITY; for (Integer i : nums) { if (i < min_so_far) { min_so_far = (double) i; } }

如果我想有一个目标
整数
数字,我想初始化为无穷大,我是否必须首先使用
双精度
类型

Integer min_val(List<Integer> nums) {

    double min_so_far = Double.POSITIVE_INFINITY;

    for (Integer i : nums) {
        if (i < min_so_far) {
            min_so_far = (double) i;
        }
    }
    return (int) min_so_far;
}
整数最小值(列表nums){
double min_so_far=double.POSITIVE_无穷大;
用于(整数i:nums){
如果(i
例如,上面的
min
函数,我在
列表中查找最小整数。我必须先将
minu\u至今
转换为
double
,然后强制将
nums
中的每个
int
转换为
double
,然后将其转换回
int
以返回


这似乎是多余的,不确定是否有更好的方法来实现这一点?

您可以使用
Integer。最大值就是这个例子。不需要无限。毕竟,最小值不能高于
Integer.MAX\u值

int min_so_far = Integer.MAX_VALUE;

总是取决于你真正想做什么。为此,您可以假设第一个值为最小值,然后检查是否有任何其他值低于该值。我认为答案对您的情况很有帮助:)这里的关键问题是:如果
nums
为空,您希望
min\u val
返回什么?由于您返回的是
Integer
(而不是
int
),因此在这种情况下,我会尝试返回
null
(除了我可能不会使用
Integer
,但我猜您有一个原因),这会影响您如何处理它……我认为这个答案对您的情况很有帮助。请参阅链接问题的答案,特别是关于整数(而不是双精度)的答案。这是一个非常聪明的想法<代码>整数。最大值是
int
的一个可能值。如果这样做,您将无法区分它是
nums
的最小(唯一)元素和
nums
为空。@PatriciaShanahan如果
Integer.MAX_VALUE
nums
的唯一元素,这将起作用。但是如果'nums'是空的,它就不会是空的,我在这里只是以它为例,而不是真正地重新发明
Collections.min