JavaでListを結合する方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaでListを結合する方法について解説しています。JavaのListを結合する方法として、ここではconcatメソッドを使う方法、addAllメソッドを使う方法、asListメソッドを使う方法を学習ましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
JavaでListを結合する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まるでしょう。
なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。
今回は、Javaに関する内容だね!
どういう内容でしょうか?
Listを結合する方法について詳しく説明していくね!
お願いします!
Listとは
List型とは、複数の値を格納できる便利なクラスです。
複数の値を格納するデータ型には以下のように定義するような配列もあてはまります。
- char[] c;
- int[] i;
List型はクラスであるため、便利なメソッドが多く用意されています。
List型を宣言するためには、データとして以下のように保持したいもののデータ型名を指定して宣言しましょう。
List<データ型名> オブジェクト名 = new ArrayList<データ型名>();
List<データ型名> オブジェクト名 = new ArrayList<データ型名>(Arrays.asList(要素, 要素, ・・・));
Arrays.asListを使うことで初期化することもでき以下のように1つずつ追加することも可能です。
オブジェクト名.add(要素);
List型の要素を取得したいときには、以下のように記述しましょう。
オブジェクト名.get(インデックス番号);
インデックス番号というのは、要素が何番目にあるかを示すもので0から始まる番号です。
Listを結合する方法
List型を結合する方法には主に3種類あります。
- 1つ目がconcatメソッドを使う方法
- 2つ目がaddAllメソッドを使う方法
- 3つ目がasListメソッドを使う方法
concatメソッドを使って結合する方法
concatメソッドを使う場合は、Stream APIというものを使いましょう。
実際にコードを書くときには、Stream APIについて理解する必要は殆どありません。
concatメソッドを使ってListを結合するには下記のように記述しましょう。
List<String> 結合後のリスト名 = Stream.concat(結合したいリストA.stream(), 結合したいリストB.stream()) .collect(Collectors.toList());
少しコードが複雑なように見えるものの、どの部分に結合したいリストを入れるかだけ抑えておけば問題ありません。
addAllメソッドを使って結合する方法
addAllメソッドの場合は、非常にシンプルで下記のように表現可能です。
結合したいリストA.addAll(結合したいリストB);
addAllは1つ目のリストに2つ目のリストの要素をすべて追加するというものです。
asListメソッドを使って結合する方法
asListメソッドを使う場合は少し複雑であるものの、この場合も、どこに結合したいリストを入れればいいかだけ押さえておけばよいでしょう。
List<List<String>> outer = Arrays.asList(結合したいリストA, 結合したいリストB); List<String> 結合されたリスト = outer.stream().flatMap(lst -> lst.stream()).collect(Collectors.toList());
->という部分はアロー演算子というもので、少し特殊な使い方をする演算子です。
実際に書いてみよう
それでは、上に挙げた3つの方法を使ってリスト型の結合をしてみます。
以下がプログラムコードです。
import java.util.*; import java.util.stream.*; public class ListConcatSample { public static void main(String[] args) { List<String> listA = Arrays.asList("a", "b", "c"); //リスト型の宣言 List<String> listB = Arrays.asList("d", "e", "f"); System.out.println(listA); //表示して確認 System.out.println(listB); //①concatメソッドを使う場合 List<String> listC = Stream.concat(listA.stream(), listB.stream()).collect(Collectors.toList()); System.out.println(listC); //表示して確認 //②addAllを使う場合 List<String> listD = new ArrayList<>(listA); listD.addAll(listB); System.out.println(listD); //表示して確認 //③asListを使う場合 List<List<String>> temp = Arrays.asList(listA, listB); List<String> listE = temp.stream().flatMap(lst -> lst.stream()).collect(Collectors.toList()); System.out.println(listE); //表示して確認 } }
これを実行した場合、3つの方法のいずれを使っても正しくリストの結合ができたことが確認できるでしょう。
[a, b, c]
[d, e, f]
[a, b, c, d, e, f]
[a, b, c, d, e, f]
[a, b, c, d, e, f]
まとめ
この記事では、JavaのList型を結合する方法について解説しました。
concatメソッドを使う方法、addAllメソッドを使う方法、asListメソッドを使う方法があるものの、自分の使いやすい方法を使うと良いでしょう。
執筆してくれたメンター
メンターOS
AIプログラミングを使って開発を行う。 プログラミング歴は約3年。 Pythonは割と好きな方。JavaもAndroid開発で触れていたりする。 大学では物理学を勉強中。 好きな物理理論は一般相対性理論らしい。 意外と動物が好きだったり、、、。 |
JavaでListを結合する方法はよく分かったので良かったです!
ゆかりちゃん、分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。