Java >> Tutoriel Java >  >> Tag >> String

Comment imprimer la liste des tableaux de chaînes à l'aide de lambda en Java [fermé]

Fermé. Cette question nécessite des détails de débogage. Il n'accepte pas de réponses actuellement.

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 question

Voici 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)


Balise Java