【Java入門】配列とListの変換(宣言の違いや2次元Listも解説)

こんにちは!フリーランスのオータケです。

配列やListを扱っていて配列とListの違いがイマイチわからないといったことはありませんか?

さらにArrayListを使っていて途中から配列に変換したいと思ったことはありませんか?

この記事では、

・配列とListの違い

という基本的な内容から

・配列からList(Listから配列)へ変換する方法

など具体的な内容についても解説していきます。

今回は配列からListへ変換する方法やListから配列へ変換する方法について、使い方をわかりやすく解説します!

配列とListの違い

配列の構造の違い

Javaでは配列という仕組みが存在しています。

この配列は初期化した時点で配列の大きさ(要素数)を決める必要があります。

そしてこの配列は大きさを決めたら変更することができません

そのため後から大きさを変更したいとなった場合には更に大きいサイズの配列を用意してそちらに移し替えてあげる必要があります。

対してListはプログラマがある程度、任意のタイミングでサイズを変更することができます。

また配列内のデータを操作する際にはArraysのメソッドを使う必要がありますが、Listの場合は標準で便利なメソッドが実装されています。

ですので、Listは配列と比べるととても扱いやすい仕組みになっています。

Javaを扱う上でListは覚えなければならない要素と言えます!

宣言(定義)の違い

配列とListでは宣言方法に違いがあります。

たとえば、int型の配列を宣言するには下記のように書きます。

ではListの場合を見てみましょう。

Listのなかでも、配列に最も扱い方が近いArrayListについてみてみましょう。

書き方が全く違いますね。

Listの場合はArrayListというクラスを使うためArrayListと書かなければなりません。

そしてそのArrayListの横についている<>でどんなデータを扱うかの型を指定しています。

またListの場合はこの型を指定する際にプリミティブ型(基本型)は利用できない仕組みになっています。

プリミティブ型とはintfloatcharといったJavaに備わっている基本の型です。

ではどうすればいいのかというと、

・int型の場合はInteger
・float型の場合はFloat

といった形で代替可能なクラスが用意されているためそれを利用することになります。

代替可能なクラスのことをラッパークラスといいます。

Listには他にも、LinkedListという種類のものやHashMapといった種類の物があります。

それぞれを使う際には

といった書き方をします。

LinkedListやHashMapについては配列とは違う使い方をするためここでは解説しませんが興味があったら是非調べてみて下さい。

ArrayListで二次元配列を宣言する方法

二次元配列を宣言しようとした場合次のような書き方になると思います。

または

しかし、これがArrayListの場合はどうなるのでしょうか?

ちょっと複雑ですね。

書き方としてはArrayList(一次元配列)の中にArrayList(一次元配列)が入っていて二次元配列を実現しているという仕組みになります。

配列からList(Listから配列)へ変換する

配列からListへ

配列からListへ変換するには、asListメソッドを使います。

asListメソッドの引数に変換したい配列を渡すことで変換した結果を戻り値として返します。

サンプルコードで確認しましょう。

実行結果:

このサンプルコードでは、配列をListとArrayListに変換しています。

Listに変換する場合は注意が必要です。

Listに変換する際にIntegerクラスの配列となっていますがint型の配列の場合はエラーが出て実行することが出来ません。

「宣言(定義)の違い」でも書きましたがArrayListはプリミティブ型を扱うことができないと書きました。

そのためasListメソッドについてもプリミティブ型が使えずIntegerのようなラッパークラスを使う必要があります。

さらにもう一点注意すべきこととして、このasListを使って生成されたListはサイズの変更ができないという変わったListを返してきます。

変換後のListのサイズは指定した配列の要素数で固定されます。

これに対して、ArrayListで変換する場合はasListで変換した配列を元に新しくArrayListを生成しているためサイズの変更が可能となっています。

Listから配列へ

では次にListから配列への変換方法を見てみましょう。

ListのtoArrayメソッドを使うことでListから配列へ変換することが可能です。

サンプルコードで確認しましょう。

実行結果:

このサンプルコードのnew Integer[10]のように記述して配列へ変換します。

配列を宣言する場合にもnew Integer[10]のように記述しますが、その部分が引数になったと覚えておくとわかりやすいのかもしれません。

配列についてもっと詳しく知りたい!

配列についてもっと知りたい方はこちらもご覧ください!

【Java入門】配列の使い方総まとめ(宣言、初期化、追加、要素数)
更新日 : 2019年7月29日

まとめ

いかがだったでしょうか?

配列は固定長(大きさを変えることができないもの)であり、Listは可変長(大きさの変更が可能)ということを学びました。

さらに配列からListへの変換にはArraysのasListを使うことで変換することが可能です。
逆にListから配列に変換する場合はListのtoArrayメソッドを使うことで変換することができます。

もし配列とListの違いがわからなくなったり、配列⇔Listの変換方法がわからなくなった場合はこの記事を見て思い出して下さい!

LINEで送る
Pocket

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

cta_under_bnr

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

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

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

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

書いた人

オータケ

オータケ

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

おすすめコンテンツ

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

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