【Java入門】ArrayListから重複要素を削除するプログラムの書き方
本記事では、JavaのArrayListから重複(繰り返し)要素を削除する方法について詳しく解説します。
まず前提知識として、ArrayListクラスはAbstractListクラスを継承し、Listインターフェースを実装しています。ArrayListは必要に応じて自動的にサイズが拡張される「動的配列」をサポートしており、非常に柔軟に扱えるのが特徴です。
ArrayListは初期サイズを指定して生成します。そのサイズを超えて要素を追加すると、コレクションは自動的に拡張されます。また、要素を削除した際には、配列が必要に応じて縮小されます。
処理内容の確認
それでは、実際の動作を見てみましょう。
入力(元のリスト):
リストの定義: [Java, Scala, JavaScript, Scala]
出力(重複削除後のリスト):
重複を削除した後のリスト: [Java, Scala, JavaScript]
このように、「Scala」が2つ含まれていた状態から、1つだけ残して重複が取り除かれていることが分かります。
アルゴリズム
重複削除の基本的な手順は以下の通りです。
ステップ1 - 処理を開始する ステップ2 - ArrayList型の input_list と、Set型の temp を宣言する ステップ3 - リストに値を設定する ステップ4 - リストをSetに変換する(Setは重複を許さないため、ここで重複が除去される) ステップ5 - 結果を表示する ステップ6 - 処理を終了する
ポイントは、Setインターフェースの実装クラスであるLinkedHashSetを使用することです。LinkedHashSetは「重複を許さない」というSetの性質に加え、「要素の挿入順序を保持する」という特徴があるため、元のリストの順序を崩さずに重複だけを削除できます。
サンプルコード1:mainメソッドにすべて記述するパターン
ここでは、すべての処理をmain関数内にまとめて記述します。
import java.util.*;
public class Demo {
public static void main(String args[]) {
ArrayList<String> input_list = new ArrayList<String>();
input_list.add("Java");
input_list.add("Scala");
input_list.add("JavaScript");
input_list.add("Scala");
System.out.println("リストの定義: " + input_list);
Set<String> temp = new LinkedHashSet<>(input_list);
List<String> result_list = new ArrayList<>(temp);
System.out.println("重複を削除した後のリスト: " + result_list);
}
}実行結果
リストの定義: [Java, Scala, JavaScript, Scala] 重複を削除した後のリスト: [Java, Scala, JavaScript]
サンプルコード2:オブジェクト指向で関数化するパターン
次に、重複削除の処理を独立したメソッドとして切り出し、オブジェクト指向プログラミングのスタイルで記述します。処理を部品化することで、再利用性や可読性が向上します。
import java.util.*;
public class Demo {
static void remove_duplicates(ArrayList<String> input_list){
Set<String> temp = new LinkedHashSet<>(input_list);
List<String> result_list = new ArrayList<>(temp);
System.out.println("重複を削除した後のリスト: " + result_list);
}
public static void main(String args[]) {
ArrayList<String> input_list = new ArrayList<String>();
input_list.add("Java");
input_list.add("Scala");
input_list.add("JavaScript");
input_list.add("Scala");
System.out.println("リストの定義: " + input_list);
remove_duplicates(input_list);
}
}実行結果
リストの定義: [Java, Scala, JavaScript, Scala] 重複を削除した後のリスト: [Java, Scala, JavaScript]
まとめ
ArrayListの重複要素を削除するには、LinkedHashSet経由でリストを変換するのが最もシンプルで確実な方法です。HashSetではなくLinkedHashSetを使うことで、元の順序を維持できる点も重要なポイントです。状況に応じて、処理をmainメソッドに直接書く方法と、メソッドとして切り出す方法を使い分けるとよいでしょう。
-
Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。
-
JavaでArrayListから重複要素を削除する方法【SetとStream API】
この記事では、JavaのArrayListから重複する要素を削除する方法を、具体的なコード例とともにわかりやすく解説します。代表的な2つのアプローチを紹介するので、目的や使用しているJavaのバージョンに応じて使い分けてください。 ArrayListから重複する文字列を削除する Setインターフェースには「重複した要素を保持できない」という特性があります。この特性を利用して、重複を含むArrayListを引数としてSetオブジェクトを生成すれば、手軽に重複を除去できます。 ポイントはLinkedHashSetを使うことです。通常のHashSetではなくLinkedHashSetを採用することで