[Java]ArrayListに対するforEachの使い方|continue・break・逆順ループ・indexの取得・forEach内でremoveする方法
![[Java]ArrayListに対するforEachの使い方|continue・break・逆順ループ・indexの取得・forEach内でremoveする方法](/java/column/wp-content/uploads/2020/05/Fotolia_72001266_Subscription_Monthly_M-1024x633.jpg)
- システム
エンジニア - JavaのArrayListに対するforEachの使い方が知りたいです。
- プロジェクト
マネージャー - 基本的な使い方から順に説明しますので、一緒に見ていきましょう。
[Java]ArrayListに対するforEachの使い方総まとめ
今回は、JavaでのArrayListに対するforEachの使い方について説明します。ここでは、基本的な使い方、continue・break、逆順ループ、indexの取得、そしてforEach内でremoveする方法について紹介します。
JavaでのArrayListに対するforEachの使い方に興味のある方は、ぜひご覧ください。
基本的な使い方
JavaでのforEachの基本的な使い方である「ラムダ式forEach」と「メソッド参照forEach」の2種類を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
// ArrayListの宣言・初期化
ArrayList<String> list = new ArrayList<>(Arrays.asList("red","green","blue"));
// ラムダ式forEach
System.out.println("ラムダ式forEach");
list.forEach(s -> System.out.println(s));
System.out.println("------");
// メソッド参照forEach
System.out.println("メソッド参照forEach");
list.forEach(System.out::println);
System.out.println("------");
}
}
|
実行結果は以下のようになります。ArrayListの要素の繰り返し処理が行えていることが分かります。
1
2
3
4
5
6
7
8
9
|
ラムダ式forEach
red
green
blue
------
メソッド参照forEach
red
green
blue
|
このようにJavaでは、forEachで繰り返し処理ができます。
continue・break
JavaでのforEach内で、continueする方法を紹介します。
forEach内ではcontinueは使えませんが、returnを記述するとcontinue相当の挙動をします。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
// ArrayListの宣言・初期化
ArrayList<String> list = new ArrayList<>(Arrays.asList("red","green","blue"));
// ラムダ式forEach
list.forEach(s -> {
// continue相当。ループをskipする
if (s.equals("green")) {
return;
}
System.out.println(s);
});
}
}
|
実行結果は以下のようになります。forEach内のreturn文でループをskipしていることが分かります。
1
2
|
red
blue
|
また、forEachではbreakは使用できません。記述するとコンパイルエラーになります。breakしたい場合は、forEachメソッドではなく、for文を使用するなどしてください。
逆順ループ
JavaのforEachを、逆順にループする方法を紹介します。Collections.reverseメソッドを使用してArrayListを逆順にしてからforEachを実行します
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws Exception {
// ArrayListの宣言・初期化
ArrayList<String> list = new ArrayList<>(Arrays.asList("red","green","blue"));
list.forEach(s -> System.out.println(s));
System.out.println("------");
// 逆順ソート
Collections.reverse(list);
list.forEach(s -> System.out.println(s));
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
red
green
blue
------
blue
green
red
|
このようにJavaでは、Collections.reverseメソッドを使用してArrayListを逆順にすることで、forEachの逆順ループが実現できます。
indexの取得
JavaのforEachで、IntStreamクラスと組み合わせてindexを取得する方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws Exception {
// ArrayListの宣言・初期化
ArrayList<String> list = new ArrayList<>(Arrays.asList("red","green","blue"));
// indexも取得
IntStream.range(0, list.size())
.forEach(index -> System.out.println("Index " + index + " is " + list.get(index)));
}
}
|
実行結果は以下のようになります。ArrayList値だけでなく、indexも使用したい場合に活用できます。
1
2
3
|
Index 0 is red
Index 1 is green
Index 2 is blue
|
forEach内でremove
JavaのforEach内で要素をremoveする方法を紹介します。先ほどの「indexの取得」を応用します。要素の削除にはremoveメソッドを使用します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws Exception {
// ArrayListの宣言・初期化
ArrayList<String> list = new ArrayList<>(Arrays.asList("red","green","blue"));
// remove前
list.forEach(s -> System.out.println(s));
System.out.println("------");
// indexも取得するforEach
IntStream.range(0, list.size()).forEach(index -> {
// index1のremove
if(index == 1){
list.remove(index);
}
});
// remove後
list.forEach(s -> System.out.println(s));
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
red
green
blue
------
red
blue
|
- システム
エンジニア - JavaでのArrayListに対するforEachのindexの取得やforEach内でremoveする方法についてよく分かりました。
- プロジェクト
マネージャー - より理解を深めるために、ご自身で実際にソースコードで指定してみましょう。
まとめ
いかがでしたでしょうか。JavaでのArrayListに対するforEachの使い方について説明しました。ここでは、基本的な使い方、continue・break、逆順ループ、indexの取得、forEach内でremoveする方法について紹介しました。
ぜひご自身でJavaのソースコードを書いて、理解を深めてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)