Comment imprimer la liste des tableaux de chaînes à l'aide de lambda en Java [fermé]
Modifiez la question pour inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour reproduire le problème. Cela aidera les autres à répondre à la question.
Fermé il y a 11 mois.
Améliorer cette questionVoici mon code :
List<String[]> salaries = getSalariesByMonth(); //I am using the old way to print the data for (String[] obj : rates) { System.out.println("User name: "obj[0]+"--"+"Salary: "+obj[1]); //obj[0] is NAME, obj[1] is SALARY } //I am trying to use this way to print the data but unable to do so. salaries.forEach(s-> System.out.println("print NAME and SALARY"));
Comment imprimer la liste contenant le tableau String à l'aide de Lambda. Merci d'avance.
Répondre
Pour convertir une boucle for-each en un forEach
appeler le modèle général est :
for (final var x : xs) { statements; } // becomes: xs.forEach(x -> { statements; }); // with a single statement, braces are optional: xs.forEach(x -> statement);
Un lambda de la forme (x, y) -> { statements; }
est le plus souvent équivalent à une méthode de la forme :
… yourMethod(final … x, final … y) { statements; }
Le type de retour et le type de paramètre sont déduits automatiquement par le compilateur lorsqu'un lambda est rencontré.
Donc, dans votre cas, ce serait :
salaries.forEach(obj -> System.out.println("User name: "+obj[0]+"--"+"Salary: "+obj[1]));
Vous pouvez également utiliser des flux pour mapper d'abord chaque objet sur une représentation sous forme de chaîne, puis générer chaque élément dans une opération de terminal :
salaries.stream() .map(obj -> "User name: "+obj[0]+"--"+"Salary: "+obj[1]) .forEach(s -> System.out.println(s));
Depuis System.out.println
attend exactement un argument qui correspond à l'argument lambda, il pourrait être remplacé par une référence de méthode, qui peut être plus lisible dans certains cas :.forEach(System.out::println)