したがって、サイズが3のリストがある場合、[0,1,2]とし、インデックス3(list.get(3))のリスト要素にアクセスしようとします。明らかに、境界外の例外で失敗します。しかし、サブリストメソッドでは、私が試してみると:リストのサイズがfromIndexとtoIndexのJavaサブリスト
list.subList(3, 3);
私は結果として空リストを取得します。ドキュメントによると:https://docs.oracle.com/javase/7/docs/api/java/util/List.html#subList(int,%20int)。このメソッドは、不正なエンドポイントインデックス値(fromIndex < 0 || toIndex> size || fromIndex> toIndex)に対してIndexOutOfBoundsExceptionをスローします。つまり、fromIndex == toIndex & & toIndex == sizeの場合、例外はスローされません。
直感的には、3つしかない場合はリストの4番目の要素にアクセスできないため、そうではないようです。では、なぜこれは機能しますか?ユースケースを満たすことを意図しているのか、それとも意図しない副作用ですか?
Listのどの実装でテストしていますか? – nasukkin
ArrayListのためにこれを試しました – user3758133
しかし、あなたは* 4番目の要素にアクセスしていないので、問題はありません。 3番目の要素の後に空のスペースのサブリストを作成しています。 'subList(2、2)'は、要素2と要素3の間の空き領域のサブリストを作成します。要素4がない場合、要素4の後の空のスペースには到達できないため、 'subList(4、4)'は失敗します。 – Andreas