はじめに:
1は、(サブリスト検索することは比較的容易であるからに近い右開いたままにする方法、)、プライマリリストは、影響力を持っているので、注意が必要だろう。
本体:
何の元一覧他のアクションが取られていない場合は、直接使用することができます。その場合は、注意を払います
ケース1:元のリストで、その結果、サブリスト変更も影響を受けています
@Test 公共 ボイド試験(){ リストの<string>リスト= 新規のArrayList <> (); list.add( "A" ); list.add( "B" ); list.add( "C" ); list.add( "D" ); リストの<string> newList = list.subList(1、3)。// リスト下标是从0开始的、这里是取{B、C} newList.add( "新しいです" )。 System.out.println( "リスト:" + リスト)。 System.out.println( "newList:" + newList)。 }
結果:
リスト:[A、B、C、新しい、D] newList:[B、C、新しいです ]
ケース2:元のリストを変更し、エラーのすべての操作のサブリストをリードします
@Test 公共 ボイド試験(){ リストの<string>リスト= 新規のArrayList <> (); list.add( "A" ); list.add( "B" ); list.add( "C" ); list.add( "D" ); リストの<string> newList = list.subList(1、3)。// リスト下标是从0开始的、这里是取{B、C} list.add( "新しいです" )。 System.out.println( "リスト:" + リスト)。 System.out.println( "newList:" + newList)。 }
結果:
リスト:[A、B、C、D、新] java.util.ConcurrentModificationExceptionが :java.util.ArrayListの$ SubList.checkForComodification(ArrayList.javaで 1231 ) :java.util.ArrayListの$ SubList.listIterator(ArrayList.javaで 1091 ) :java.util.AbstractList.listIterator(AbstractList.javaで 299 ) java.util.ArrayListの$ SubList.iterator(ArrayList.java時: 1087 ) java.util.AbstractCollection.toString(AbstractCollection.java時: 454 ) で、 java.lang.String.valueOf(String.java: 2994 ) java.lang.StringBuilder.appendで(StringBuilder.java: 131 ) ......