是否有任何java util类和相应的方法,它返回未排序数组中的max元素?
答案 0 :(得分:7)
您可以使用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文档。
答案 1 :(得分:2)
Collections.max(Collection<YourObj> yourList);
YouObj
应该实现Comparable
,否则它会通过自然排序获得最大值...
答案 2 :(得分:1)
使用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]
,可用于确定是否计算了结果。
答案 3 :(得分:0)
如果你的数组只是一个int,double或那种数组,你可以轻松使用
Collections.max()
方法。
Collections.max(Arrays.asList(array));
在询问此类问题之前,请先使用google并检查是否已经知道如何解决您的问题。我在这里复制了两种方法的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 - 最大元素所在的集合 决心。返回:给定集合的最大元素, 根据其元素的自然顺序。
但是如果你有某种对象数组没有直接与另一个元素进行比较,你必须选择使用Comparator
参数的重载max方法。因此,你也必须有一个比较器。
public static <T> T max(Collection<? extends T> coll,
Comparator<? super T> comp)
返回给定集合的最大元素,根据 由指定的比较器引起的顺序。中的所有元素 集合必须通过指定的比较器相互比较 (也就是说,comp.compare(e1,e2)不能抛出ClassCastException 集合中的任何元素e1和e2)。这种方法迭代 整个集合,因此它需要与大小成比例的时间 该系列。
参数:coll - 最大元素所在的集合 决心。 comp - 用于确定最大值的比较器 元件。空值表示元素&#39;自然排序 应该使用。返回:给定集合的最大元素, 根据指定的比较器。