次のコードは、合計が x になる整数のペアを返します。たとえば、arr {1, 2, 3, 4, 5] で x が 7 の場合、リストには {3, 4} と {2, 5} が含まれている必要があります。主な目標は、プライベート メソッドでパラメーターの検証を実行する方法を理解することです。質問はコメント内にネストされています。提案は、尋ねられた質問のみに限定してください。私の質問をチェックするためにコードに飛び込んでくれてありがとう。
public static List<Pair> getPairsFromPositiveArray(int[] arr, int x) {
// check for all positive integers
for (int i : arr) { // if arr is null, then this loop would throw NPE. So no need to make an exclicit check for null.
if (i < 0) throw new IllegalArgumentException("No integer should be negative.");
}
final List<Pair> list = new ArrayList<Pair>();
getPair(arr, x, list);
return list;
}
private static void getPair(int[] arr, int x, List<Pair> list) {
// QUESTION 1: Should check of "all positive integers" be done here too ?
/*
* QUESTION 2:
* list is data structure which we created internally ( user did not provide it )
* Does anyone suggest, it throw an NPE or do an explicit assert check for list != null ?
*/
assert list != null; // form my understanding of e effective java.
assert arr != null; // form my understanding of e effective java.
final Set<Integer> set = new HashSet<Integer>();
/*
* QUESTION 3:
* arr is a data structure which was input by the user.
* Should we check for assert arr != null or let loop throw a NPE ?
*/
for (int i : arr) {
if (set.contains(i)) {
System.out.println(i + " : ");
list.add(new Pair(i, x - i));
} else {
set.add(x - i);
}
}
}