我需要找到两个中较小的一个Comparable
values:
Comparable<C> a = ...;
Comparable<C> b = ...;
Comparable<C> min = a.compareTo(b) <= 0 ? a : b;
这类似于Math.min(a, b)
, 但对于Comparable
.
我知道三元运算符已经很短,但我无法内联表达式a
and b
我认为min(a, b)
and max(a, b)
更容易理解。
我知道有几个函数可以运行Stream
and Collection
值,例如:
Stream.of(a, b).min(Comparator.naturalOrder())
这将有助于内联表达式,但我仍然发现它很难阅读,并且对于这样一个小任务来说有点太多的开销。
目前我正在使用自己的实用函数,但我有兴趣知道是否有用于此目的的现有函数。怎样才能找到两个中的最小值Comparable
以可读且独立于库的方式读取值,而无需太多性能开销?
-
From java.util.Collections
: Collections.max() https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#max-java.util.Collection- and Collections.min() https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#min-java.util.Collection-
Comparable<C> a = ...;
Comparable<C> b = ...;
Comparable<C> min = Collections.min(Arrays.asList(a,b));
-
From org.apache.commons.lang3.ObjectUtils
: ObjectUtils.max() https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ObjectUtils.html#max(java.lang.Comparable,%20java.lang.Comparable) and ObjectUtils.min() https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ObjectUtils.html#min(java.lang.Comparable,%20java.lang.Comparable)
Comparable<C> a = ...;
Comparable<C> b = ...;
Comparable<C> min = ObjectUtils.min(a, b);
Apache Commons 的开销较少,并且能够处理null
值,但它是第三方库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)