2.3 数字の中から最大値・最小値を探す

2.3 数字の中から最大値・最小値を探す

単純にソートして、最初の値と最後の値を返しているだけですが、もうちょっとしっかり書くべきでしょうか。。
List が null の場合の処理とか、値が 1つだけの場合とか。

/**
 * $Id: Example2_3.java 1168 2007-03-11 08:32:52Z nanasess $
 */
package jp.examples;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import junit.framework.TestCase;

/**
 * Example2_3
 * 
 * <p>
 * 2.3 finding maximum/minimum among a list of numbers.
 * </p>
 *
 * @author $Author: nanasess $
 * @version $Revision: 1168 $ $Date: 2007-03-11 17:32:52 +0900 (日, 11 3 2007) $
 */
public class Example2_3 extends TestCase {
    
    /**
     * 数字の中から最大値・最小値を探すテストケース.
     */
    public void testFindMaxAndMinNumbers() {
        
        // 最大数
        Integer max = new Integer(6553499);
        // 最小数
        Integer min = new Integer(1);
        
        // Integer の List を生成し, ランダムに値を追加する.
        List<Integer> intList = new ArrayList<Integer>();
        intList.add(5);
        intList.add(3829);
        intList.add(max);
        intList.add(2);
        intList.add(882347);
        intList.add(382);
        intList.add(min);
        intList.add(5382);
        intList.add(38289);
        
        assertEquals(max, getMaxValue(intList));
        assertEquals(min, getMinValue(intList));
    }

    /**
     * Integer の List から最大数を返す.
     *
     * @param intList Integer の List
     * @return List の中の最大数
     * @throws IllegalArgumentException 最大値が返せない場合.
     */
    public Integer getMaxValue(List<Integer> intList) {
        try {
            Collections.sort(intList);
            return intList.get(intList.size() -1); 
        } catch (ArrayIndexOutOfBoundsException e) {
            throw new IllegalArgumentException("Bad search of max value.");
        }
    }
    
    /**
     * Integer の List から 最小数を返す.
     *
     * @param intList Integer の List
     * @return List の中の最小数
     * @throws IllegalArgumentException 最小値が返せない場合
     */
    public Integer getMinValue(List<Integer> intList) {
        try {
            Collections.sort(intList);
            return intList.get(0);
        } catch (ArrayIndexOutOfBoundsException e) {
            throw new IllegalArgumentException("Bad search of min value.");
        }
    }
}