JavaのListとListArrayのremove()メソッドの使い方

はじめに

JavaのListのremove()メソッドは、リストから要素を削除するために使用されます。ArrayListはListインタフェースの最も広く使用される実装であるため、ここではArrayListのremove()メソッドを使用した例を紹介します。

JavaのListのremove()メソッド

リストから要素を削除するためには、remove()メソッドが2つあります。

    1. 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);

最初に、このコードはリストを作成して表示します。

Output

[A, B, C, C, B, A]

その後、このコードはremove(1)を実行してインデックス1の要素を削除します。最後に、新しいリストと削除された要素を出力します。

Output

[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の要素を削除しようとすると、

Output

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);

最初に、このコードは不変なリストを構築し、表示します。

  1. Output

    [a, b]

 

その後、コードはremove()メソッドを使用して、インデックス1の要素を削除しようとします。

  1. Exception in thread “main” java.lang.UnsupportedOperationException
  2. at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
  3. at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
  4. 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);

最初に、このコードはリストを作成して出力します。

Output

[A, B, C, C, B, A]

そして、このコードは最初のCのインスタンスを削除するためにremove(“C”)を実行します。次に、結果のリストを表示し、操作のブール値(true)も表示します。

Output

[A, B, C, B, A] true

その後、このコードはremove(”X”)を実行しますが、リストにXのインスタンスが存在しないため、リストは変化しません。最後に、リストと操作のブール値(false)を印刷します。

Output

[A, B, C, B, A] false

結論として

この記事では、JavaのListメソッドremove()について学びました。

おすすめの読書:

  • Java List
  • Java ArrayList

参考文献:

  • List remove() API Doc
コメントを残す 0

Your email address will not be published. Required fields are marked *