带流的int的最小值数组[重复]

Posted

技术标签:

【中文标题】带流的int的最小值数组[重复]【英文标题】:Min value array of int with streams [duplicate] 【发布时间】:2018-01-06 17:28:58 【问题描述】:

我正在尝试使用流获取 int 数组的最小值,我正在尝试执行以下操作:

public static int smallestInt(int[] args) 
    return Arrays.stream((Arrays.stream(args)
                .boxed().toArray( Integer[]::new ))
                .mapToInt(Integer::intValue).min().getAsInt;

我的问题是最好的方法是什么?

PS:有一个类似的问题,但这里没有 sterams Finding the max/min value in an array of primitives using Java

【问题讨论】:

它不起作用?如果是这样,什么失败了?一般来说......你的问题在哪里? 【参考方案1】:

你太复杂了。

IntStream.of(args).min().getAsInt()

注意:如果数组为空,这将抛出 NoSuchElementException,这可能是一个理想的结果。

【讨论】:

【参考方案2】:

我认为你使用的流太多了。

它会这样做:

int theMin = Arrays.stream(args).min().getAsInt();

由于方法参数args根据方法签名已经是一个整数数组:

public static int smallestInt(int[] args) 

【讨论】:

【参考方案3】:

你可以随便用,比较容易理解和正确

public static int smallestInt(int[] args) 
     return Arrays.stream(args).min().getAsInt();

【讨论】:

【参考方案4】:

大多数其他人都提供了很好的解决方案,但他们根本没有涵盖没有最小值的情况,这也应该涵盖这种情况:

public static int smallest(int[] ints)
    return Arrays.stream(ints).min().orElse(Integer.MIN_VALUE);

【讨论】:

我不喜欢那个解决方案。作为该函数的调用者,我如何知道数组中最小的 int Integer.MIN_VALUE,还是该数组是否为空?如果数组为空,正确的做法是抛出异常,getAsInt 已经这样做了。 @Michael 你说得有道理。也许直接返回 IntOptional 更好,然后调用者可以自己决定当没有值存在时会发生什么 是的,这样会更好。

以上是关于带流的int的最小值数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

创建一个数组,然后使用while循环获取最小值[重复]

黑马基础阶段测试题:定义一个int类型的数组,数组中元素为{5,7,3,9,4}。求出数组中的最小值,并判断最小值是否为偶数,如果是偶数则输出“最小值为偶数”,如果不是偶数则输出“最小值为奇数”。打印

两个数组的最小值[重复]

lintcode-寻找旋转排序数组中的最小值 java 需复习

LeetCode: 153. 寻找旋转排序数组中的最小值(二分查找)

从 MAX_VALUE 中找到数组的最小值