Résumé de la conversion mutuelle entre les méthodes Groovy par défaut de Groovy et l'API Stream de Java

Au travail, j'ai réécrit les méthodes Groovy par défaut de Groovy sous une forme utilisant l'API Stream de Java, donc je vais le résumer sous forme de mémorandum.

Le fonctionnement de l'exemple de code a été confirmé dans les versions suivantes. Java: 11 Groovy: 2.5.8

DefaultGroovyMethod ⇔ Stream API each ⇔ forEach

Groovy


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

---résultat---
Java
Groovy
Scala

Java


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

---résultat---
Java
Groovy
Scala

collect ⇔ map + collect

Groovy


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

---résultat---
[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);

---résultat---
[JAVA, GROOVY, SCALA]

findAll ⇔ filter + collect

Groovy


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

---résultat---
[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);

---résultat---
[1, 3, 5]

Matériel de référence

Référence officielle

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

Article Qiita

Méthode Groovy qui semble être souvent utilisée (Liste) https://qiita.com/kimromi/items/e326bf9c24220df97ecf

Recommended Posts

Résumé de la conversion mutuelle entre les méthodes Groovy par défaut de Groovy et l'API Stream de Java
Examinons la signification de "stream" et "collect" dans l'API Stream de Java.
Remarques sur l'API Stream et SQL de Java
[Java] Résumé personnel des classes et méthodes (basique)
Résumé du comportement de ToString avec les annotations Java et Groovy
Conversion entre objets Java et JSON à l'aide de Moshi