【Java入門】ListをsubListで切り出して新しいListを作る方法 | 您所在的位置:网站首页 › sublist方法 › 【Java入門】ListをsubListで切り出して新しいListを作る方法 |
こんにちは!エンジニアの中沢です。 JavaでListから必要な範囲だけを取得して新しいListを作りたいと思ったことはありませんか? Listから範囲を指定して新しいListを作るには、subListメソッドを使います。 今回は、subListメソッドでListから必要な範囲を切り出す方法解説します! この記事では、 ・Listから必要な範囲だけを取得して新しいListを作りたい ・subListメソッドの使い方を知りたい という基本的な内容から、 ・リストの範囲を指定して、一括削除をしたい ・subListの値を変えると元のListの値も変わるの? などの応用的な使い方に関しても解説していきます。 今回はこれらの方法を覚えるために、subListメソッドの使い方をわかりやすく解説します! なお、Javaの記事については、こちらにまとめています。 目次subListとはサイズの大きなListの一部分だけが必要なときに、その必要な一部分だけを切り出して新しいListを作りたいときにはどうしたらいいでしょうか? Listから一部を切り出して、新しいListを作りたいときにはsubListメソッドを使います。 subListメソッドの引数でListの範囲を指定して切り出すことができます! subListの使い方 Listから範囲を切り出してsubListを作る方法まずは元のListから必要な範囲だけを取得して新しいsubListを作る方法です! import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List mainList = new ArrayList(); mainList.add(0); mainList.add(1); mainList.add(2); mainList.add(3); mainList.add(4); List sbList = mainList.subList(1, 3); System.out.println("元のList = " + mainList); System.out.println("subList = " + sbList); } }これでsubListを作ることができました。 さっそく実行結果を見てみましょう! [実行結果] 元のList = [0, 1, 2, 3, 4] subList = [1, 2]元のListの中身は[0, 1, 2, 3, 4]です。 これは大丈夫ですね! 次にsubListの中身ですが、インデックスの終わりを含まないことに気をつけましょう。 ここでは(1, 3)指定したので[1, 2]が出力されます。 subListの値を変えると元のListの値も変わるsubListと元のListは値を共有しています。 そのため、subListの値を変更すると元のListの値も変わります。 さきほどのコードに続いて、次のようにsubListの値を変更したときにどうなるのか見てみましょう。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List mainList = new ArrayList(); mainList.add(0); mainList.add(1); mainList.add(2); mainList.add(3); mainList.add(4); List sbList = mainList.subList(1, 3); sbList.set(0, 101); System.out.println("元のList = " + mainList); System.out.println("subList = " + sbList); } }[実行結果] 元のList = [0, 101, 2, 3, 4] subList = [101, 2]subListで変更した値が元のListにも反映されていることが確認できます。 元のListの値を変えるとsubListの値も変わる次は元のListの値を変えた場合です。 この場合もsubListの値が変わります。 さきほどのコードに続いて、次のように元のListの値を変更します。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List mainList = new ArrayList(); mainList.add(0); mainList.add(1); mainList.add(2); mainList.add(3); mainList.add(4); List sbList = mainList.subList(1, 3); sbList.set(0, 101); mainList.set(2, 102); System.out.println("元のList = " + mainList); System.out.println("subList = " + sbList); } }[実行結果] 元のList = [0, 101, 102, 3, 4] subList = [101, 102]元のListとsubListの値が共有されていることが確認できました! subListはシャローコピーなので注意が必要subListは元のListと同じデータを参照しています。 これをシャローコピーといいます。 また、次のようにインデックスの範囲が0の場合は空のListができるので注意してください。 List sbList = mainList.subList(1, 1); Listの範囲を指定して一括削除をする方法ここではsubListを使って、インデックスの範囲を指定して一括削除する方法を解説します。 まずはListを作成します。 次にsubListとclearメソッドで削除します。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List mainList = new ArrayList(); mainList.add(0); mainList.add(1); mainList.add(2); mainList.add(3); mainList.add(4); System.out.println("元のList = " + mainList); mainList.subList(1, 3).clear(); System.out.println("元のList = " + mainList); } }[実行結果] 元のList = [0, 1, 2, 3, 4] 元のList = [0, 3, 4]これで次の実行結果のようにsubListで指定した範囲の要素が削除されました。 このようにsubListで指定した範囲をclearメソッドで削除することで、範囲を指定した一括削除ができるようになります。 subListを利用することで発生する例外リストの要素数を超えるインデックスを指定した場合にはIndexOutOfBoundsExceptionの例外が発生します。 事前にsizeメソッドなどで要素数を確認して例外が発生しないようにしましょう。 文字列を切り出す場合はsubstringを使うListの切り出しにはsubListメソッドを使いましたが、文字列の切り出しにはsubstringメソッドを使います。 こちらの記事では、substringメソッドで文字列を切り出す方法を解説しています。
この記事では紹介しきれなかったListの様々な使い方をこちらの記事で解説しているので、ぜひ確認してみてください!
いかがでしたか? 今回はsubListを使って、Listの範囲を指定して操作する方法について解説しました。 Listの範囲を指定して一括削除をする方法は便利なのでぜひ覚えてください! もしsubListを使ったListの操作を忘れてしまったらこの記事を確認してくださいね! プログラミング学習中、誰かへ相談したいことはありませんか? ![]() プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。 そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、40種類以上のWEBスキルが身につくオリジナル教材があり、回答率100%のQA掲示版で学習に関する悩みを解決します! 気になる方はぜひ詳細をご覧ください。 侍テラコヤの詳細をみる |
CopyRight 2018-2019 实验室设备网 版权所有 |