确定最大整数“null saved”

时间:2012-12-14 11:33:45

标签: java max

我需要对我写的函数进行最终审核和一些提示。

  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));    
}

提前致谢

3 个答案:

答案 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[]并将0Integer.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));