带流的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的最小值数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
黑马基础阶段测试题:定义一个int类型的数组,数组中元素为{5,7,3,9,4}。求出数组中的最小值,并判断最小值是否为偶数,如果是偶数则输出“最小值为偶数”,如果不是偶数则输出“最小值为奇数”。打印
lintcode-寻找旋转排序数组中的最小值 java 需复习