JavaのListとListArrayのremove()メソッドの使い方
はじめに
JavaのListのremove()メソッドは、リストから要素を削除するために使用されます。ArrayListはListインタフェースの最も広く使用される実装であるため、ここではArrayListのremove()メソッドを使用した例を紹介します。
JavaのListのremove()メソッド
リストから要素を削除するためには、remove()メソッドが2つあります。
-
- E remove(int index): 指定されたインデックスの要素を削除し、その要素を返すメソッドです。以降の要素は左に1つずつシフトされます。指定されたインデックスが範囲外の場合、IndexOutOfBoundsExceptionがスローされます。もしリストの実装がこの操作をサポートしていない場合、UnsupportedOperationExceptionがスローされます。
boolean remove(Object o): 指定されたオブジェクトの最初の出現を削除するメソッドです。もしリストが指定された要素を含んでいない場合、リストは変更されません。このメソッドは要素がリストから削除された場合にはtrueを返し、そうでない場合はfalseを返します。もしオブジェクトがnullであり、リストがnull要素をサポートしていない場合、NullPointerExceptionがスローされます。もしリストの実装がこのメソッドをサポートしていない場合、UnsupportedOperationExceptionがスローされます。
remove()メソッドのいくつかの例を見てみましょう。
指定されたインデックスの要素を削除する。
この例では、E remove(int index) メソッドを探索します。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
String removedStr = list.remove(1);
System.out.println(list);
System.out.println(removedStr);
最初に、このコードはリストを作成して表示します。
[A, B, C, C, B, A]
その後、このコードはremove(1)を実行してインデックス1の要素を削除します。最後に、新しいリストと削除された要素を出力します。
[A, C, C, B, A] B
インデックス1のBが削除されました。
2. remove(int index) メソッドによる IndexOutOfBoundsException
この例では、リストが指定したインデックスを超えた場合の E remove(int index) を探求します。
List<String> list = new ArrayList<>();
list.add("A");
String removedStr = list.remove(10);
このコードは、長さが1のリストを作成します。しかし、コードがインデックス10の要素を削除しようとすると、
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 1 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.remove(ArrayList.java:535) at com.scdev.java.ArrayListRemove.main(ArrayListRemove.java:19)
この試みは、IndexOutOfBoundsExceptionを投げます。
3. 変更できないリスト remove() サポートされていない操作例
List.of()メソッドは変更不可能なリストを作成します。
List<String> list = List.of("a", "b");
System.out.println(list);
String removedStr = list.remove(1);
System.out.println(removedStr);
最初に、このコードは不変なリストを構築し、表示します。
-
Output
[a, b]
その後、コードはremove()メソッドを使用して、インデックス1の要素を削除しようとします。
- Exception in thread “main” java.lang.UnsupportedOperationException
- at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
- at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
- at TestRemoveList.main(TestRemoveList.java:12)
この試みは、UnsupportedOperationExceptionをスローします。また、list.remove(“a”)またはlist.remove(“b”)を試みると、UnsupportedOperationExceptionがスローされます。
4. リストからオブジェクトを削除する
この例では、boolean remove(Object o)メソッドを探求します。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
boolean isRemoved = list.remove("C");
System.out.println(list);
System.out.println(isRemoved);
isRemoved = list.remove("X");
System.out.println(list);
System.out.println(isRemoved);
最初に、このコードはリストを作成して出力します。
[A, B, C, C, B, A]
そして、このコードは最初のCのインスタンスを削除するためにremove(“C”)を実行します。次に、結果のリストを表示し、操作のブール値(true)も表示します。
[A, B, C, B, A] true
その後、このコードはremove(”X”)を実行しますが、リストにXのインスタンスが存在しないため、リストは変化しません。最後に、リストと操作のブール値(false)を印刷します。
[A, B, C, B, A] false
結論として
この記事では、JavaのListメソッドremove()について学びました。
おすすめの読書:
- Java List
- Java ArrayList
参考文献:
- List remove() API Doc