私はclass A {int sNo; String name;}
に有効なコンストラクタを持っています。 ストリームAPIを使用して、名前に基づいて名前を整理し、名前に基づいてソートする必要があります。ストリームとラムダを使用するJavaオブジェクトに対する複数の操作
public class Test1 {
public static void main(String[] args) {
ArrayList<A> l = new ArrayList();
l.add(new A(1, " 1name "));
l.add(new A(7, " 3name "));
l.add(new A(6, ""));
l.add(new A(5, " 2name "));
l.add(new A(4, " 5name "));
l.add(new A(2, ""));
List<String> i = l.stream()
.filter(s -> !s.name.isEmpty())
.map(s -> s.name.trim())
.sorted()
.collect(Collectors.toList());
System.out.println(i);
}
}
それだけ
[, 1name, 2name, 3name, 5name]
ソート順に名前が、私は、オブジェクト全体を必要と返しています。
私はs -> s.name.trim()
が提出され、特定の操作を適用するが、オブジェクト全体を格納することができますどのように、
その名前だけを格納した理由であることを知っています。
ご返信いただきありがとうございます。はい、うまく動作していますが、疑問があります。 s - > new A(s.sno、s.name.trim()))はスケーラブルではありません。この例では2つの変数だけを含んでいるので、コンストラクタを呼び出すことはできますが、クラスAでは20 -30の変数は、同じ値を持つコンストラクタを呼び出すのは賢明ではなく、ちょうど私が1を更新するのは賢明ではありません。 –