LoginSignup
0
0

More than 3 years have passed since last update.

GroovyのDefaultGroovyMethodsとJavaのStream APIの相互変換まとめ

Last updated at Posted at 2019-11-24

仕事でGroovyのDefaultGroovyMethodsをJavaのStream APIを使った形に書き直すという作業を行ったので、備忘録も兼ねてまとめます。

サンプルコードの動作はそれぞれ以下のバージョンで確認しています。
Java: 11
Groovy: 2.5.8

DefaultGroovyMethod ⇔ Stream API

each ⇔ forEach

Groovy
def list = ["Java", "Groovy", "Scala"]
list.each { println it }

---結果---
Java
Groovy
Scala
Java
List<String> list = List.of("Java", "Groovy", "Scala");
list.forEach(System.out::println);

---結果---
Java
Groovy
Scala

collect ⇔ map + collect

Groovy
def lowerCases = ["java", "groovy", "scala"]
def upperCases = lowerCases.collect { it.toUpperCase() } 
println upperCases

---結果---
[JAVA, GROOVY, SCALA]
Java
List<String> lowerCases = List.of("java", "groovy", "scala");
List<String> upperCases = lowerCases.stream().map(language -> language.toUpperCase()).collect(Collectors.toList());
System.out.println(upperCases);

---結果---
[JAVA, GROOVY, SCALA]

findAll ⇔ filter + collect

Groovy
def numbers = [1, 2, 3, 4, 5] 
def odds = numbers.findAll { it % 2 != 0 } 
println odds

---結果---
[1, 3, 5]
Java
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> odds = numbers.stream().filter(number -> number % 2 != 0).collect(Collectors.toList());
System.out.println(odds);

---結果---
[1, 3, 5]

参考資料

公式リファレンス

List
https://docs.oracle.com/javase/jp/8/docs/api/java/util/List.html
Stream
https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/Stream.html
Collectors
https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/Collectors.html

DefaultGroovyMethods
http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/runtime/DefaultGroovyMethods.html

Qiita記事

Groovyよく使いそうなメソッド(List編)
https://qiita.com/kimromi/items/e326bf9c24220df97ecf

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0