Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでリストからサブリストを削除する方法を解説!subList().clear()の使い方

本記事では、Javaのリスト(List)から指定した範囲のサブリスト(部分リスト)を削除する方法について詳しく解説します。

リストは順序を持つコレクションであり、要素を順番に格納・アクセスすることができます。インデックスベースのメソッドを使って、要素の挿入・更新・削除・検索が可能で、重複した要素も保持できるのが特徴です。

処理内容の確認

まず、今回行う処理の例を見てみましょう。

入力例

入力リスト: [Java, Programming, Is, Fun]

期待される出力

サブリスト削除後のリスト: [Java, Programming]

この例では、インデックス2から4の範囲(「Is」と「Fun」)に該当するサブリストを削除し、残りの要素だけを残しています。

アルゴリズム

サブリストを削除する手順は以下の通りです。

ステップ1 - 処理を開始する
ステップ2 - AbstractList型の変数 input_list を宣言する
ステップ3 - リストに値を追加する
ステップ4 - subList().clear() を使って、指定したインデックス範囲のサブリストを削除する
ステップ5 - 結果を表示する
ステップ6 - 処理を終了する

ポイント:subList()メソッドとclear()メソッド

subList(int fromIndex, int toIndex) メソッドは、リスト内の fromIndex(含む) から toIndex(含まない) までの範囲をビューとして返します。この返されたビューに対して clear() を呼び出すことで、元のリストから該当範囲の要素を一括して削除できます。これは個々の要素をループで削除するよりも簡潔かつ効率的な方法です。

例1:main関数内ですべての処理を実行する場合

ここでは、すべての操作をmainメソッド内にまとめて記述します。

import java.util.*;
public class Demo {
    public static void main(String args[]){
        AbstractList<String> input_list = new LinkedList<String>();
        input_list.add("Java");
        input_list.add("Programming");
        input_list.add("Is");
        input_list.add("Fun");
        System.out.println("定義されたリスト: " + input_list);
        input_list.subList(2, 4).clear();
        System.out.println("サブリスト削除後のリスト: " + input_list);
    }
}

実行結果

定義されたリスト: [Java, Programming, Is, Fun]
サブリスト削除後のリスト: [Java, Programming]

例2:オブジェクト指向プログラミングの形式で関数にカプセル化する場合

次に、操作を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミング(OOP)のスタイルで実装します。

import java.util.*;
public class Demo {
    static void remove_sublist(AbstractList input_list){
        input_list.subList(2, 4).clear();
        System.out.println("サブリスト削除後のリスト: " + input_list);
    }
    public static void main(String args[]){
        AbstractList<String> input_list = new LinkedList<String>();
        input_list.add("Java");
        input_list.add("Programming");
        input_list.add("Is");
        input_list.add("Fun");
        System.out.println("定義されたリスト: " + input_list);
        remove_sublist(input_list);
    }
}

実行結果

定義されたリスト: [Java, Programming, Is, Fun]
サブリスト削除後のリスト: [Java, Programming]

まとめ

Javaでリストからサブリストを削除するには、subList(開始インデックス, 終了インデックス).clear() を使うのが最もシンプルで効率的な方法です。この手法はLinkedListやArrayListなど、Listインターフェースを実装するあらゆるクラスで利用できます。また、処理をメソッドとして分離することで、コードの再利用性と可読性が向上し、保守しやすいプログラムになります。

  1. JavaでArrayListから部分リスト(SubList)を削除する方法を解説

    subList()メソッドとclear()メソッドを組み合わせる方法 ListインターフェースのsubList()メソッドは、要素のインデックスを表す2つの整数値を引数に受け取り、現在のListオブジェクトのうち、指定されたインデックス範囲に該当する部分リスト(ビュー)を返します。 また、clear()メソッドは、現在のListオブジェクトからすべての要素を削除するメソッドです。 この2つのメソッドを組み合わせれば、ArrayListから任意の範囲の要素をまとめて削除できます。手順はとてもシンプルで、削除したい部分リストの境界となるインデックスを指定して、次のように呼び出すだけです。 obj.

  2. JavaでArrayListから重複要素を削除する方法【SetとStream API】

    この記事では、JavaのArrayListから重複する要素を削除する方法を、具体的なコード例とともにわかりやすく解説します。代表的な2つのアプローチを紹介するので、目的や使用しているJavaのバージョンに応じて使い分けてください。 ArrayListから重複する文字列を削除する Setインターフェースには「重複した要素を保持できない」という特性があります。この特性を利用して、重複を含むArrayListを引数としてSetオブジェクトを生成すれば、手軽に重複を除去できます。 ポイントはLinkedHashSetを使うことです。通常のHashSetではなくLinkedHashSetを採用することで