是否有类似的东西Collections.max在标准java运行时库中找到常规数组的数组中的最大值?
如果您有一个可以使用的对象数组
Collections.max(Arrays.asList(array));
Run Code Online (Sandbox Code Playgroud)
如果你有一个原始数组,你可以使用一个简单的循环.
long[] array;
long max = array[0];
for(long l : array) if (max < l) max = l;
Run Code Online (Sandbox Code Playgroud)
不,没有 Arrays.max 或类似的东西,至少在 Java 6 中是这样。
如果您查看 Collections.max 的签名和实现,您会发现它大量使用了参数化类型。在 Java 中,泛型数组至少可以说是有问题的,因此,为 Java 中的数组提供泛型 max 实现并将重点放在(泛型)集合上可能不是一个好主意。
编辑:正如 newacct 正确指出的那样,通用数组的使用不一定比通用集合的使用更成问题,因此我编辑了上面的文本,因为原始文本是错误的。尽管如此,“通用数组有问题”的主要论点在我看来仍然有效,并且集合应该优于引用类型数组。
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) {
if (comp==null)
return (T)max((Collection<SelfComparable>) (Collection) coll);
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (comp.compare(next, candidate) > 0)
candidate = next;
}
return candidate;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11129 次 |
| 最近记录: |