两个可比对象的最小/最大函数

2024-02-09

我需要找到两个中较小的一个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以可读且独立于库的方式读取值,而无需太多性能开销?


  1. 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));
    

  1. 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(使用前将#替换为@)

两个可比对象的最小/最大函数 的相关文章

随机推荐