Java中与min(a,b)和max(a,b)等效的方法是什么?

44

C 中,有一个 min() 便捷宏可以帮助使代码更易读。

在Java中,我知道的最短等效方法是:

(a > b ? b : a)

但在我看来,它不像 min() 那样自说明。

Java 中是否有内置的 min() 方法(我只是没找到)?还是我的唯一选择是自己定义一个方法?


4
对于那些喜欢声望的人来说,这真是个笑话 - 我很惊讶这不是一个重复的问题,而且第一个谷歌搜索结果中的“java min max”是Math javadoc。 - David Snabel-Caunt
1
我喜欢人们对简单问题的快速回答。请注意,Math.min() 存在类型问题,但他们通过为每种不同类型覆盖它来解决了这个问题。此外,请注意,对于包括大写字母(Double、BigDecimal 等)的对象,有一个可比较接口,定义了一个 .compareTo() 方法,您可以使用它来创建一个“Comparable = min(Comparable, Comparable)”函数。 - Bill K
即使Java没有min函数,只需将上面的代码放入一个函数中并调用它min(),它就会变成自我记录的 :) - user890904
@noelicus 一点也不愤世嫉俗——我喜欢人们互相帮助的热情。我真的很喜欢这里的系统,只是偶尔有些投票关闭却没有附带评论,让我有些不太满意。 - Bill K
@uTubeFan,您想使用min函数的哪种类型?
  1. 使用内置类型,例如int?
  2. 使用用户定义类型,例如Employee类? 如果是第二种情况,我认为Java已经放弃了您,因此您需要创建自己的min函数。
- Fernando Pelliccioni
显示剩余2条评论
10个回答

62

2
我知道我漏掉了什么。+1 给所有推荐 Math.min() 的人,但只能接受一个 :) - uTubeFan
4
对于最大值你可以使用 Math.max。如果使用 import static java.lang.Math.*;,则可以使用简单的 min(a, b)max(a, b) - Peter Lawrey

6

请查看Math的javadoc。

您可以像这样使用它:

import static java.lang.Math.*;

public static void main(String[] args) {
    System.out.println(min(1, 0));
}

4

3
你是指 Math.min(a, b) 还是 Math.max(a,b)?

2
使用 Math 类,它具有 min()max() 方法。


1
所有的 Math.maxMath.min 的答案都是错误的。事实上,在Java中没有使用本地 Comparable 接口的通用min和max函数。

1

是的,Math类包含两个名为maxmin的静态方法,它们的行为与它们的名称相对应。请查看link。在这里,您将找到一些有用的示例。


1

从Java 8开始(实际上是在2022年),我们可以使用像Integer.min(a, b)Double.max(a, b)这样的方法。


0

这个怎么样 this 有一个最小/最大方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接