--Concaténer les chaînes retournées par plusieurs objets dans la liste --Utilisez java.util.stream.Stream introduit à partir de Java 8
MyData.java
/**
 *Représente les données clé-valeur.
 */
public class MyData {
  private final String k;
  private final String v;
  public MyData(String key, String val){
    this.k = key;
    this.v = val;
  }
  public String key(){
    return k;
  }
  public String val(){
    return v;
  }
}
Main.java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class Main {
  public static void main(String[] args) {
    //Construire des données
    List<MyData> list = new ArrayList<MyData>() {
      {
        add(new MyData("KEY", "VALUE"));
        add(null);
        add(new MyData("Clé", "valeur"));
        add(new MyData("Ki", "Baryu"));
        add(new MyData("clé", "valeur"));
        add(null);
        add(new MyData("key", null));
      }
    };
    //Créer et traiter des objets Stream
    String s = list.stream()
      .filter(Objects::nonNull) //Exclure les éléments nuls
      .filter(myData -> myData.val() != null) //Exclure ceux avec une valeur nulle
      .sorted(Comparator.comparing(MyData::key).reversed()) //Tri inversé par clé
      .map(myData -> myData.key() + ":" + myData.val()) //Générer une chaîne pour chaque élément
      .collect(Collectors.joining(", ")); //Concaténer les chaînes
    //Chaîne de caractères concaténée en sortie
    System.out.println(s);
  }
}
$ javac *.java
$ java Main
clé:valeur,Clé:valeur,Ki:Baryu, KEY:VALUE
Recommended Posts