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

JavaでArrayListから重複要素を削除する方法を解説

本記事では、JavaのArrayList(配列リスト)から重複する要素を削除する方法について詳しく解説します。

リスト(List)とは、要素を順序付けて格納し、順番にアクセスできるコレクションのことです。インデックスベースのメソッドを使って、要素の挿入・更新・削除・検索を行うことができます。ただし、リストは重複した要素を持つことが許されているため、場合によっては重複を取り除く処理が必要になります。

処理内容のデモンストレーション

以下に、実際の動作例を示します。

入力:

定義されたリスト: [Java, Scala, Python, Java]

期待される出力:

重複削除後のリスト: [Java, Scala, Python]

アルゴリズム

ステップ1 - 開始
ステップ2 - リスト「input_list」とセット「result_set」を宣言する
ステップ3 - 値を定義する
ステップ4 - セットは重複値を持てないため、入力リストをセットに変換する
ステップ5 - 結果を表示する
ステップ6 - 終了

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

この例では、すべての操作を「main」関数の中にまとめて記述します。

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class Demo {
   public static void main(String[] args) {
      System.out.println("必要なパッケージがインポートされました");
      List<String> input_list = new ArrayList<String>();
      input_list.add("Java");
      input_list.add("Scala");
      input_list.add("Python");
      input_list.add("Java");
      System.out.println("定義されたリスト: " +input_list.toString());
      Set<String> result_set = new LinkedHashSet<String>(input_list);
      System.out.println("重複削除後のリスト: "+result_set);
   }
}

出力結果

必要なパッケージがインポートされました
定義されたリスト: [Java, Scala, Python, Java]
重複削除後のリスト: [Java, Scala, Python]

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

この例では、操作を関数としてカプセル化し、オブジェクト指向プログラミングのスタイルで実装します。

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class Demo {
   static void remove_duplicates(List<String> input_list){
      Set<String> result_set = new LinkedHashSet<String>(input_list);
      System.out.println("重複削除後のリスト: "+result_set);
   }
   public static void main(String[] args) {
      System.out.println("必要なパッケージがインポートされました");
      List<String> input_list = new ArrayList<String>();
      input_list.add("Java");
      input_list.add("Scala");
      input_list.add("Python");
      input_list.add("Java");
      System.out.println("定義されたリスト: " +input_list.toString());
      remove_duplicates(input_list);
   }
}

出力結果

必要なパッケージがインポートされました
定義されたリスト: [Java, Scala, Python, Java]
重複削除後のリスト: [Java, Scala, Python]

ポイント解説:なぜLinkedHashSetを使うのか

重複削除にはSetインターフェースの特性を利用します。Setは数学的な集合を表すコレクションであり、同一の要素を1つしか保持できません。そのため、リストをSetに変換するだけで自動的に重複が排除されます。

中でもLinkedHashSetを使用する理由は、要素の挿入順序を保持しながら重複を除去できるためです。もし順序が不要であればHashSet、要素をソートした状態で保持したい場合はTreeSetを使用することもできます。用途に応じて適切な実装クラスを選択しましょう。

  1. Pythonでリストから重複要素を削除する方法を徹底解説

    重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。

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

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