用于在未排序数组中查找最大元素的 Java util 函数
Posted
技术标签:
【中文标题】用于在未排序数组中查找最大元素的 Java util 函数【英文标题】:Java util function for finding max element in unsorted array [closed] 【发布时间】:2014-10-19 09:48:33 【问题描述】:是否有任何 java util 类和相应的方法可以返回未排序数组中的最大元素?
【问题讨论】:
请解释一下为什么在 google 上找不到这个? 对于 1522 的代表,您可以以更好的方式询问或先进行一些谷歌搜索! :) @NoobEditor 1522 全部来自问题,没有来自答案。 @icza :正是我在之前评论中的观点!! :D 【参考方案1】:您可以使用Collections.max(Arrays.asList(your_array))
。而且数组不能是原始数组。
Java 文档:http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection)
PS : 我建议你在这里发布问题之前先阅读 java 文档。
【讨论】:
可能要补充一点,数组不能是原始数组。【参考方案2】:Collections.max(Collection<YourObj> yourList);
YouObj
应该实现Comparable
,否则它将通过自然排序获得最大值...
【讨论】:
【参考方案3】:使用 Java 8 Stream api,您可以非常轻松地做到这一点。
假设数组不是原始数组:
public <T extends Comparable<? super T>> T max(final T[] array)
return Stream.of(array).max(naturalOrder()).get();
这会强制数组中的对象对其自身或自身的某个超类实现Comparable
- 即它具有“自然顺序”。
对于原始数组,Java 8 有 IntStream
、LongStream
和 DoubleStream
,可以像这样使用:
public long max(final long[] array)
return LongStream.of(array).max().getAsLong();
请注意,如果传递了一个空数组,这两种方法都会抛出 NoSuchElementException
- 这是设计使然。查找空数组的max()
时没有合理的默认返回值,因此Java 8 返回一个Optional[XXX]
,可用于确定是否计算了结果。
【讨论】:
不错的答案,但您不认为发布此类问题的用户无法理解:D【参考方案4】:如果您的数组只是一个 int、double 或那种您可以轻松使用的数组
Collections.max()
方法。
Collections.max(Arrays.asList(array));
在问此类问题之前,请先使用谷歌并检查是否已经知道解决您问题的方法。我在这里复制了 2 种方法的 java api doc。
Collections.max()
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
返回给定集合的最大元素,根据 其元素的自然排序。集合中的所有元素必须 实现 Comparable 接口。此外,所有元素在 集合必须是相互可比的(即 e1.compareTo(e2) 必须 不要为任何元素 e1 和 e2 抛出 ClassCastException 收藏)。此方法迭代整个集合,因此它 需要的时间与集合的大小成正比。
参数:coll - 最大元素的集合 决定。返回:给定集合的最大元素, 根据其元素的自然顺序。
但是,如果您有某种不直接与另一个元素比较的对象数组,则您必须使用重载的 max 方法,该方法也使用Comparator
参数。因此,您也必须有一个比较器。
public static <T> T max(Collection<? extends T> coll,
Comparator<? super T> comp)
返回给定集合的最大元素,根据 由指定的比较器诱导的顺序。中的所有元素 集合必须由指定的比较器相互比较 (也就是说,comp.compare(e1, e2) 不能抛出 ClassCastException 集合中的任何元素 e1 和 e2)。此方法迭代 整个集合,因此它需要与大小成比例的时间 集合。
参数:coll - 最大元素的集合 决定。 comp - 用于确定最大值的比较器 元素。空值表示元素的自然排序 应该使用。返回:给定集合的最大元素, 根据指定的比较器。
【讨论】:
以上是关于用于在未排序数组中查找最大元素的 Java util 函数的主要内容,如果未能解决你的问题,请参考以下文章