JavaのList型とは!?ArrayListの使い方を基礎の基礎から解説!

JavaにはListという配列よりも便利な型がありますが、

使い方がよくわからない……
どんなときに使えばいいの?
ArraListって何?

など疑問を持っている方も多いのではないでしょうか?

そこで、この記事ではListについて、以下の内容で解説していきます!

  • 【基礎】List型オブジェクトの宣言と初期化
  • 【基礎】ループを使った要素へのアクセス
  • 【基礎】Listのメソッドの使い方
  • 【発展】Listの要素をソートする方法
  • 【発展】Listと他のコレクションとの変換方法

今回はListについて、わかりやすく解説します!

List型オブジェクトの宣言と初期化

まず初めに空のList型オブジェクトの作り方を解説します!

List型のオブジェクトにはArrayListクラスなどで生成したインスタンスを格納します。インスタンスを生成する際には、new演算子を用います。

例えばString型の要素をもつListの場合は、以下のように記述します。

なお、List型オブジェクトの宣言と初期化の詳しい内容については、こちらを参考にしてくださいね。

【Java入門】Listの初期化(newとArrayListでの宣言とadd)
更新日 : 2019年3月31日

ループを使った要素へのアクセス

for文などのループ処理を使って要素へアクセスする方法について解説します。

iteratorを使ったfor文

Listインターフェースを実装するクラスでは、iteratorメソッドを使ってIterator型のオブジェクトを使用することができるようになります。

Iterator型のオブジェクトからはhasNextメソッドnextメソッドを呼び出して利用できます。

hasNextメソッドは、リストが次の要素を持っている場合にtrueを返します。nextメソッドはリストの次の要素を返します。

Listインターフェースを実装するクラスには、例えばArrayListクラスなどがあります。

実行結果:

iteratorメソッドの使い方についてもっと詳しく知りたい方は、こちらを参考にしてくださいね。

【3分でわかるJavaの基礎】List内のデータをfor文で処理する方法(iterator)
更新日 : 2017年6月7日

forEachメソッド

Java8で追加されたforEachメソッドとラムダ式を使うと、リストの要素全てにアクセスする場合に簡潔に記述することができます。

実行結果:

forEachメソッドの使い方についてもっと詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】Java8のforEachとラムダ式を配列、List、Mapで使う
更新日 : 2019年5月4日

Listのメソッドの使い方

Listインターフェースにはたくさんのメソッドが用意されています。メソッドを表にまとめました。

メソッド説明記述例
addリストに値を追加list.add(1)
addAllリストにリストを追加list1.add(list2)
setリストの値を変更list.set(0, 3)
getリストの値を取得list.get(0)
sizeリストの要素数を取得list.size()
indexOfリストから値の要素番号を取得list.indexOf("a")
subListリストから範囲を指定してコピーsubList(1, 3)
containsリストに値が含まれるか判定list.contains("a")
removeリストから指定する要素番号の値を削除list.remove(1);
distinctリストで重複する値を削除list.stream().distinct()
cloneリストのコピーlist.clone()

それぞれのメソッドの使い方についてみていきましょう。

add, addAllで要素を追加する方法

addメソッドリストに値を追加する場合に使用します。

addAllメソッドはあるリストに別のリストを追加する場合に使用します。

実行結果:

addメソッド、addAllメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【3分でわかるJavaの基礎】Listにデータを追加する方法(add,addAll)
更新日 : 2017年6月7日

setで要素を書き換える方法

setメソッドはリストの要素を書き換える場合に使用します。

実行結果:

setメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】簡単!Listクラスのsetメソッドの使い方
更新日 : 2019年1月23日

getで要素の値を取得する方法

getメソッド要素の値を取得する場合に使用します。

実行結果:

getメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【3分でわかるJavaの基礎】Listのデータを取得する方法(get)
更新日 : 2019年5月23日

sizeで要素数を取得する方法

sizeメソッドリストの要素数を取得する場合に使用します。

実行結果:

sizeメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【3分Java入門】Listのsizeメソッドで要素数を知る!
更新日 : 2019年6月4日

indexOfで要素の位置を検索する方法

indexOfメソッド指定した値がリスト内のどこに位置するか検索する場合に使用します。

実行結果:

indexOfメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】indexOfとlastIndexOfで文字列を検索する(List/String)
更新日 : 2018年11月12日

subListでListの一部をコピーする方法

subListリスト内の範囲を指定し、範囲内のリストで新しいリストを作成する場合に使用します。

実行結果:

subListメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】ListをsubListで切り出して新しいListを作る方法
更新日 : 2017年12月8日

containsで要素の有無を確認する方法

containsメソッド指定した値がリスト内にあるかないか判定する場合に使用します。

実行結果:

containsメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】Listの要素をremove、removeAllで削除する方法
更新日 : 2019年3月30日

removeで要素を削除する方法

removeメソッド要素を削除する場合に使用します。

実行結果:

removeメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】Listの要素をremove、removeAllで削除する方法
更新日 : 2019年3月30日

distinctで重複する要素を取り除く方法

distinctメソッドJava8から追加されたStream APIです。

リスト内の重複する要素を取り除く場合に使用します。

実行結果:

distinctメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【3分Java入門】Listで重複するデータを取り除く方法
更新日 : 2019年4月13日

cloneでListの全てをコピーする方法

cloneメソッドリストのすべてをコピーする場合に使用します。

実行結果:

cloneメソッドについて詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】Listのコピーとcloneメソッドの使い方
更新日 : 2018年11月13日

Listの要素をソートする方法

リスト内の要素を順番に並べ替える場合には、Collectionsクラスのsortメソッドを使用します。

実行結果:

リストの要素をソートする方法についての詳しい解説は、こちらを参考にしてくださいね。

【Java入門】配列やListをソートする方法(文字列もソート)
更新日 : 2019年4月23日

Listと他のコレクションとの変換方法

Listと他のコレクションとの相互変換についてみていきましょう。

配列とListの相互変換

配列からListに変換する場合は、ArraysクラスのasListメソッドを使用します。

Listから配列に変換する場合は、ListインターフェースのtoArrayメソッドを使用します。

実行結果:

配列とListの相互変換についてもっと詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】List⇔配列の相互変換は”toArray”と”asList”でOK!
更新日 : 2019年6月8日

ListとSetの相互変換

それぞれのインスタンスを生成する際にコンストラクタの引数に変換前のオブジェクトを指定することで変換することができます。

実行結果:

ListとSetの相互変換についてもっと詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】ListとSetクラスの変換・違いまとめ
更新日 : 2019年1月23日

ListとMapの相互変換

ListからMapへ変換する場合は、Java8から追加されたStream APIのcollectメソッドを使うと簡潔に記述することができて便利です。

MapからListに変換する場合は、Listの要素にMapの値を変換する場合とキーを変換する場合とで使うメソッドが異なります。

値を変換する場合はvaluesメソッドを、キーを変換する場合はkeySetメソッドを使用します。

実行結果:

ListとMapの相互変換についてもっと詳しく知りたい方は、こちらを参考にしてくださいね。

【Java入門】List⇔Map変換でJava8のStreamを使う方法
更新日 : 2017年9月6日

ListとArrayListの違い

ListとArrayListは混同されることが多いので、違いについて解説します。大きな違いはListはインターフェースで、ArrayListはListを実装したクラスになります。

インターフェースはオブジェクトの型として宣言時に使うことはできますが、インスタンスを生成することはできません。

以下のような記述は可能です。

Listは左辺のようにオブジェクトの宣言時に型として使用することはできますが、右辺でnew句を使ってインスタンスを生成する場合には使用することはできません。

new句を使ってインスタンスを生成する場合は、ArrayListなどのListを実装したクラスがよく使われます。ちなみに、ArrayListはオブジェクトの宣言時の型として使用することももちろん可能です。

ではオブジェクトの宣言時にList型で宣言するのがいいのか、ArrayList型で宣言するのがいいのかどのように使い分けたらいいのでしょうか?

どちらも使い方によってメリット、デメリットがあります。詳しくはこちらを参考にしてください。

Javaのコレクションクラスまとめ(ListとArrayListの違いも解説)
更新日 : 2019年4月18日

まとめ

いかがでしたか?

よく使うメソッドからあまり見かけないメソッド、新しいメソッドなど多くのメソッドを解説してきました。これらのメソッドの使い方を覚えることでJavaのListを使いこなすことが出来るようになります。

もし、Listについて忘れてしまったらこの記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説