Java Collections API、Collections.javaのバグに遭遇しました。Java Collections APIバグ?
ここでは、JDKのソースコードをそのまま使用しています。 JavaDocのバージョンタグは「1.106、04/21/06」となっています。 )T候補= i.next(:メソッドは、あなたが方法を分析するために第二を取る場合、あなたはすぐにバグを発見ますライン638
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
に位置しています。 D'oh!最初にhasNext()をチェックせずにIteratorでi.next()を呼び出しますか?それは単に例外を求めているだけです。
確かに、コーディング中に見つかったはずのものがありますか?つまり、APIを使用すると、コレクションに少なくとも2つの要素があるかどうかを確認する必要があります。
"これは、コレクションに少なくとも2つの要素があるかどうかをAPIで確認する必要があることを意味します。 - 実際には、コレクションが空であるかどうか最初にチェックする必要があるということです。これは、next()が例外をスローする唯一のケースです。 –