【Java】Listの使い方一覧!Listのほぼ全ての使い方が載ってます!

JavaにはListという配列よりも便利な型があります。
現場でもよくつかわれると思います。

この記事では、Listの使い方全般を解説していきます。

JavaのListとは?

JavaのListとは配列みたいなものです。要素の検索や消去、追加、置換が配列より簡単にできるという認識で大丈夫だと思います。

もう少し詳しく説明すると、配列ははじめにメモリ上に領域を確保を確保しますが、Listは新しい要素が追加されるたびにメモリの領域を確保します。
また、JavaのListのインタフェースは「java.util.List」で、Javaの各要素にはListインデックスがあります。Listの最初の要素にはインデックス0であり、2番目の要素にはインデックス1になります。因みにインデックスは「Listの先頭から何要素離れているか」を意味してます。Listは任意にJavaオブジェクトに追加できます。

Listの宣言方法

まず初めにListの宣言方法を解説します!

Listを宣言するには、Listの要素の型を指定する必要があります。
Listの要素の型は、Integer型やString型などです。Listのオブジェクト(変数)には指定した型のものであればなんでも入れることができます。
インスタンスを生成する際には、new演算子を使います。
例えばint型の要素をもつListの場合は、以下のように記述します。

これで空のintが用意できました。
初期化時に値を追加する方法についてみていきましょう!

挿入,追加

Listに要素(オブジェクト)を挿入するには、add()メソッドを使用します。

null値の挿入

Listにnull値を挿入をすることもできます

インデックスを指定して要素を挿入

特定のインデックス要素をListにを挿入することもできます。List インターフェースは、最初のパラメータとしてインデックス、また第二のパラメータとして要素を挿入する方法があります。

すでにListに要素が含まれていた場合、要素はListの内部シーケンスでさらに下に押し下げられます。例えば、新しい要素がインデックス0に挿入される前にインデックス0を持っていた要素は、インデックス1に押し下げられます。

要素の取得

“Listはインデックスを指定して要素を取得することができます

Listに格納されているインデックス順にループで要素を取得することもできます。

List内の検索

ArrayListクラスで用意されている下記のメソッドを使うと、Listの要素を検索する事ができます。

indexOf()
lastIndexOf()

indexOf()を使ってインデックス番号を検索する

“indexOf()メソッドはList、ArrayListクラスのオブジェクト内に格納されている要素の先頭から検索を行います。
indexOf()を使ってインデックスを検索する例

出力結果

index1 = 0
index2 = 1

Listにある最後の要素を検索

“lastIndexOf()メソッドは、List指定された要素の最後にあるインデックスを検索します。
lastIndexOf()メソッドの例”

出力結果

lastIndex = 2

最後に発生したインデックスは2です。

要素が含まれているかの確認

Listに特定の要素が含まれているか確認

“ListのList contains()メソッドを使用して 、Listに特定の要素が含まれているかどうかを確認できます。

出力結果

TRUE

List実際には要素が含まれているためtrueが出力されます。

Listにnull値が含まれているかの確認

“実際Listにnull値が含まれているかどうかを確認できます。

List にnull値が含まれているかどうかを確認するサンプル

contains() メソッドは、明らかに入力パラメータがnullの場合、各要素との比較にequals()メソッドを使用せず==演算子を使用しています。

要素の削除

下記の2つの方法でListの削除ができます。

1. remove(オブジェクトの要素)
2. remove(インデックス番号)

remove(オブジェクトの要素)でListから削除

remove(Object element)で指定した値が存在する場合、Listからその要素を削除します。その後、List内の全ての要素は上に移動します。なのでインデックス番号は1ずつズレます。

この例は最初に要素を追加してから、Listから削除してます。

remove(インデックス番号)でListから削除

Listのremove(int index)メソッドは、指定されたインデックス番号にある要素を削除します。その後、List内のすべての要素はList内で上に移動します。なのでインデックス番号は1ずつズレます。

Listから全ての要素を削除

” Listインターフェースには、clear()メソッドというものがあります。clear()メソッドは呼び出されたときにListからすべての要素を削除するメソッドが含まれています。Listからすべての要素を削除することは、クリアするとも言います。

まず、新しいListが作成されます。次に、2つの要素がListに追加されます。3番目に、clear()メソッドが呼び出されます。その後clear()メソッドが呼び出され、Listの中身が完全に空になります。

List間で共通部分以外の要素の削除(.retainAll)

“Listインターフェースには、List間で共通部分以外の要素の削除できるretainAll()メソッドと呼ばれるメソッドがあります。つまり、Listのretain()メソッドは、一方の変数にない全ての要素をList内から削除します。結果2つのListの共通部分が残ります。List retainAll()

変数listの中身

element1,element3

Listのサイズ

size()メソッドを呼び出すこと で、Listの要素数を取得できます。

size()メソッドの例

出力結果

2

Listの型変換

Listを配列に変換

Listを配列に変換することもできます。

Listを配列に変換した例

Listを特定のString型の配列 に変換

ListをString型等、特定の型の配列 に変換することもできます。

ListをString型の配列に変換した例

サイズ0のString配列をに渡しても、toArray()返される配列にはListのすべての要素が含まれることに注意してください。Listの要素と同じ数の要素が含まれます。

配列をListに変換

Listを配列に変換することもできます。

Listを配列に変換した例

Arrays.asList()は、配列をListに変換 するメソッドです。

Listのソート(並べ替え)

Listをソートするには2つの方法があります。自然な並べ替えにはCollectionsクラスを使用するか、List sort()メソッドを使用して独自のコンパレータで並べ替えることができます。

Listのソートの例

出力結果

Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]

Writer
Ryotin

Ryotin

現役フリーランスエンジニアです。使ってるエージェントはフライテック!得意言語はJava。月収は75万円。SESのフリーランスではこれ以上稼ぐのは厳しそう...とはいってもサラリーマンの時より倍の収入だから家族も喜んでるけどね!

最新の案件情報

フリーランスエンジニアの案件探し