我需要对我写的函数进行最终审核和一些提示。
public static Integer max(Integer... pNumber) {
Integer lResult = null;
for (Integer lNumber : pNumber) {
if (lResult == null || (null != lNumber && lNumber > lResult)) {
lResult = lNumber;
}
}
return lResult;
}
我不确定我的代码是否优雅。 null参数以及null结果是可能的。 但是......我觉得我在代码中解决了一些复杂的问题。 该函数是公司使用的实用程序类的一部分。 不允许使用第三方图书馆。
这里有相应的测试:
@Test
public void testMaxWithInteger() {
assertEquals(new Integer(9), NumberUtils.max(4, 2, -4, null, 9, 5));
}
提前致谢
答案 0 :(得分:4)
恕我直言我不会使用null
个对象,因为Integer[]
可以使用6倍于int[]
public static Integer max(Integer... ints) {
long ret = Long.MIN_VALUE;
for (Integer i: ints)
if (null != i && i > ret)
ret = i;
return ret >= Integer.MIN_VALUE? (int) ret : null;
}
而不是Integer[]
我会使用int[]
并将0
或Integer.MIN_VALUE
作为我的“未初始化”值。
答案 1 :(得分:0)
我会避免在@Peter建议时进行空检查,或者将值分配给Integer.MIN_VALUE
public static Integer max(Integer... pNumber) {
Integer lResult = Integer.MIN_VALUE;
for (Integer lNumber : pNumber) {
if (lNumber == null) { //continue if null value encountered.
continue;
}
if (lNumber > lResult) {
lResult = lNumber;
}
}
return lResult;
}
答案 2 :(得分:-2)
Collections.max(Arrays.asList(pNumber));