【Java】for文だけじゃない!いろんなループ処理!さて、どれを実装しようか
Javaでのループ処理は基本的なfor文やwhile文の他にも、様々なライブラリやAPIを利用して多彩な方法で実装できます
以下に、代表的なループ処理の方法をいくつか紹介します
1. 基本的なループ文
1.1 for文
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
1.2 拡張for文(for-each文)
List<String> list = Arrays.asList("A", "B", "C");
for (String s : list) {
System.out.println(s);
}
1.3 while文
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
1.4 do-while文
int i = 0;
do {
System.out.println(i);
i++;
} while (i < 10);
2. Java Streams API を使ったループ
Java 8から導入されたStreams APIを使用することで、関数型プログラミングのスタイルでループを処理できます
2.1 forEach
List<String> list = Arrays.asList("A", "B", "C");
list.stream().forEach(s -> System.out.println(s));
2.2 map + forEach
List<String> list = Arrays.asList("A", "B", "C");
list.stream()
.map(String::toLowerCase)
.forEach(System.out::println);
3. 外部ライブラリを使ったループ処理
3.1 Guava の Lists.partition
Guavaライブラリを使用して、リストをチャンクに分割して処理する方法です
List<String> list = Arrays.asList("A", "B", "C", "D", "E");
List<List<String>> partitions = Lists.partition(list, 2);
partitions.forEach(part -> {
part.forEach(System.out::println);
});
3.2 Apache Commons の CollectionUtils
Apache Commons Collections の CollectionUtils.forAllDo を使ってループ処理を行うことも可能です
List<String> list = Arrays.asList("A", "B", "C");
CollectionUtils.forAllDo(list, new Closure<String>() {
public void execute(String input) {
System.out.println(input);
}
});
4. 再帰を使ったループ処理
再帰を使用することで、ループ処理を実装することも可能です
特に、階層構造を持つデータの処理などに有効です
void recursiveLoop(int n) {
if (n < 0) return;
System.out.println(n);
recursiveLoop(n - 1);
}
5. 並列処理を使ったループ
5.1 parallelStream
Stream API を使った並列処理も可能です
List<String> list = Arrays.asList("A", "B", "C");
list.parallelStream().forEach(System.out::println);
5.2 CompletableFuture
CompletableFuture を使って非同期処理を並列に実行することもできます
List<CompletableFuture<Void>> futures = new ArrayList<>();
for (String s : list) {
futures.add(CompletableFuture.runAsync(() -> System.out.println(s)));
}
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
是非フォローしてください
最新の情報をお伝えします