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