Javaでさまざまなコレクションを使いこなす:ArrayListとLinkedListの基本と要素削除の実装例
この記事では、Javaにおけるさまざまな種類のコレクション(ArrayList、LinkedList)の使い方を、具体的なサンプルコードとともに解説します。リストから特定の要素を削除する処理を通じて、それぞれのコレクションクラスの特徴を理解していきましょう。
処理内容の概要
今回扱うプログラムは、整数値を持つリストを作成し、指定した位置の要素を削除して結果を表示するというシンプルなものです。
入力例
入力リスト: [101, 102, 103, 104, 105]
期待される出力
要素削除後のリスト: 101 102 103 105
アルゴリズム
プログラムの流れは以下の通りです。
ステップ1 - 処理を開始する ステップ2 - input_collection という名前のリストを宣言する ステップ3 - リストに値を定義(追加)する ステップ4 - remove() メソッドにインデックス番号を引数として渡し、該当する要素を削除する ステップ5 - 結果を表示する ステップ6 - 処理を終了する
例1:ArrayListを使用した場合
まずは ArrayList の使用例です。ArrayListは初期サイズを指定して作成され、そのサイズを超えると自動的に拡張されます。また、オブジェクトを削除すると配列が縮小される場合があります。内部的には可変長配列として実装されており、ランダムアクセスが高速である点が特徴です。
import java.util.*;
public class Demo {
public static void main(String[] args){
ArrayList<Integer> input_collection = new ArrayList<Integer>();
for (int i = 1; i <= 5; i++)
input_collection.add(i + 100);
System.out.println("定義されたリスト: " + input_collection);
input_collection.remove(3);
System.out.println("\n要素削除後のリスト: ");
for (int i = 0; i < input_collection.size(); i++)
System.out.print(input_collection.get(i) + " ");
}
}
実行結果
定義されたリスト: [101, 102, 103, 104, 105] 要素削除後のリスト: 101 102 103 105
この例では、remove(3) を呼び出すことで、インデックス3(4番目)の要素「104」が削除され、リストには [101, 102, 103, 105] が残ります。
例2:LinkedListを使用した場合
次に LinkedList の使用例です。java.util.LinkedList クラスは双方向連結リスト(doubly-linked list)として動作し、一般的な連結リストに期待される操作を提供します。インデックスを指定した操作では、リストの先頭または末尾のうち、指定されたインデックスに近い方から走査を行うため効率的です。要素の追加・削除が頻繁な場合に有利なデータ構造です。
import java.util.*;
public class Demo {
public static void main(String[] args){
LinkedList<Integer> input_collection = new LinkedList<Integer>();
for (int i = 1; i <= 5; i++)
input_collection.add(i + 100);
System.out.println("定義されたリスト: " + input_collection);
input_collection.remove(3);
System.out.println("\n要素削除後のリスト");
for (int i = 0; i < input_collection.size(); i++)
System.out.print(input_collection.get(i) + " ");
}
}
実行結果
定義されたリスト: [101, 102, 103, 104, 105] 要素削除後のリスト 101 102 103 105
まとめ
ArrayListとLinkedListはどちらもListインターフェースを実装しており、同じコード構造で利用できます。しかし内部構造が異なるため、用途に応じた使い分けが重要です。
- ArrayList: 要素へのランダムアクセスが多く、読み取り中心の処理に適しています。
- LinkedList: 要素の挿入・削除が頻繁に発生する処理に適しています。
このように、Javaのコレクションフレームワークを理解することで、目的に応じた最適なデータ構造を選択できるようになります。
-
Javaの「Collection」と「Collections」の違いを徹底解説!初心者にもわかる使い分け
はじめに:JavaコレクションフレームワークとはJavaのコレクションフレームワークは、複数のオブジェクトをまとめて管理・操作するための仕組みです。このフレームワークには、ラッパークラスやユーティリティクラス、Vector や Hashtable のようなレガシー実装用のクラス、そして各種コレクションインターフェースなどが含まれています。ここで多くの初学者が混乱するのが、「Collection」と「Collections」という似た名前の存在です。この2つは全く別の役割を持つため、本記事でその違いを明確にしていきます。Collectionとは?Collection は、Javaコレクションフレ
-
【Java】CollectionインターフェースとCollectionsクラスの違いとは?違いを徹底解説
はじめにJavaのコレクションフレームワークを学んでいると、「Collection」と「Collections」という名前が似ている2つの存在に出会います。名前はほぼ同じですが、その役割はまったく異なります。この記事では、両者の違いをわかりやすく解説します。CollectionとCollectionsの主な違いCollectionはJavaにおけるインターフェースです。一方、Collectionsはユーティリティクラスであり、コレクションを操作するための便利な静的メソッドを提供します。Set、List、QueueなどはCollectionインターフェースのサブインターフェースです。また、Map