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) {
// データを構築
List<MyData> list = new ArrayList<MyData>() {
{
add(new MyData("KEY", "VALUE"));
add(null);
add(new MyData("キー", "バリュー"));
add(new MyData("きい", "ばりゅう"));
add(new MyData("鍵", "値"));
add(null);
add(new MyData("key", null));
}
};
// Stream オブジェクトを生成して処理
String s = list.stream()
.filter(Objects::nonNull) // 要素が null のものは排除
.filter(myData -> myData.val() != null) // バリューが null のものは排除
.sorted(Comparator.comparing(MyData::key).reversed()) // キーで逆順ソート
.map(myData -> myData.key() + ":" + myData.val()) // 要素ごとに文字列を生成
.collect(Collectors.joining(", ")); // 文字列を連結
// 連結した文字列を出力
System.out.println(s);
}
}