【Java入門】ListをsubListで切り出して新しいListを作る方法

こんにちは!エンジニアの中沢です。

JavaでListから必要な範囲だけを取得して新しいListを作りたいと思ったことはありませんか?

Listから範囲を指定して新しいListを作るには、subListメソッドを使います。

今回は、subListメソッドでListから必要な範囲を切り出す方法解説します!

この記事では、

・Listから必要な範囲だけを取得して新しいListを作りたい
・subListメソッドの使い方を知りたい

という基本的な内容から、

・リストの範囲を指定して、一括削除をしたい
・subListの値を変えると元のListの値も変わるの?

などの応用的な使い方に関しても解説していきます。

今回はこれらの方法を覚えるために、subListメソッドの使い方をわかりやすく解説します!

subListとは

サイズの大きなListの一部分だけが必要なときに、その必要な一部分だけを切り出して新しいListを作りたいときにはどうしたらいいでしょうか?

Listから一部を切り出して、新しいListを作りたいときにはsubListメソッドを使います。

subListメソッドの引数でListの範囲を指定して切り出すことができます!

subListの使い方

Listから範囲を切り出してsubListを作る方法

まずは元のListから必要な範囲だけを取得して新しいsubListを作る方法です!

これでsubListを作ることができました。
さっそく実行結果を見てみましょう!

[実行結果]

元のListの中身は[0, 1, 2, 3, 4]です。
これは大丈夫ですね!

次にsubListの中身ですが、インデックスの終わりを含まないことに気をつけましょう。

ここでは(1, 3)指定したので[1, 2]が出力されます。

subListの値を変えると元のListの値も変わる

subList元のList値を共有しています。

そのため、subListの値を変更すると元のListの値も変わります。

さきほどのコードに続いて、次のようにsubListの値を変更したときにどうなるのか見てみましょう。

[実行結果]

subListで変更した値が元のListにも反映されていることが確認できます。

元のListの値を変えるとsubListの値も変わる

次は元のListの値を変えた場合です。

この場合もsubListの値が変わります。

さきほどのコードに続いて、次のように元のListの値を変更します。

[実行結果]

元のListsubListの値が共有されていることが確認できました!

subListはシャローコピーなので注意が必要

subList元のList同じデータを参照しています。

これをシャローコピーといいます。

また、次のようにインデックスの範囲が0の場合は空のListができるので注意してください。

Listの範囲を指定して一括削除をする方法

ここではsubListを使って、インデックスの範囲を指定して一括削除する方法を解説します。

まずはListを作成します。

次にsubListclearメソッドで削除します。

[実行結果]

これで次の実行結果のようにsubListで指定した範囲の要素が削除されました。

このようにsubListで指定した範囲をclearメソッドで削除することで、範囲を指定した一括削除ができるようになります。

subListを利用することで発生する例外

リストの要素数を超えるインデックスを指定した場合にはIndexOutOfBoundsExceptionの例外が発生します。

事前にsizeメソッドなどで要素数を確認して例外が発生しないようにしましょう。

文字列を切り出す場合はsubstringを使う

Listの切り出しにはsubListメソッドを使いましたが、文字列の切り出しにはsubstringメソッドを使います。

こちらの記事では、substringメソッドで文字列を切り出す方法を解説しています。

【Java入門】substringで文字列を切り出し抽出する方法
更新日 : 2019年5月10日

Listの使い方総まとめ

この記事では紹介しきれなかったListの様々な使い方をこちらの記事で解説しているので、ぜひ確認してみてください!

JavaのList型とは!?ArrayListの使い方を基礎の基礎から解説!
更新日 : 2019年4月23日

まとめ

いかがでしたか?

今回はsubListを使って、Listの範囲を指定して操作する方法について解説しました。
Listの範囲を指定して一括削除をする方法は便利なのでぜひ覚えてください!

もしsubListを使ったListの操作を忘れてしまったらこの記事を確認してくださいね!

LINEで送る
Pocket

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

cta_under_bnr

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

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

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

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

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

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

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