Javaのストリームは二つのリストをzip圧縮します

から:

私は人のHashSetのを持っています。人は同様のfirstName、lastNameの年齢があります。人を(「ハンス」、「男」、36)

[「ハンス・マン」、「別の名前」、「別の名前」]:私の仕事は、それらは、年齢によってとlastName等とfirstNameのCONCATソート、17歳以上の者のリストを取得することです

ただ輸入を許可イム:

import java.util.stream.Stream; import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList;

私の考えでは、最初にそれらを並べ替える別々のストリーム内の名前をマッピングし、それらを圧縮することだったが、それは動作しません。

public static void getNamesOfAdultsSortedByAge(Stream<Person> stream){

    Stream<Person> result = stream;
    Stream<Person> result1 = result.filter(p -> p.getAge() >= 18)
                            .sorted((x, y) -> Integer.compare(x.getAge(),y.getAge()));


    Stream<String> firstName = result1.map(Person::getFirstName);
    Stream<String> lastName = result1.map(Person::getLastName);

    Stream<String> result3 = concat(firstName, lastName);

    List<String> result4 = result3.collect(Collectors.toList());

    System.out.println(result4);
}

前もって感謝します

ニコラスK:

あなたは使ってそうすることができます:

public static void getNamesOfAdultsSortedByAge(Stream<Person> stream) {
    List<String> sorted = stream.filter(p -> p.getAge() >= 18)
                                .sorted((x, y) -> Integer.compare(x.getAge(),y.getAge()))
                                .map(e -> e.getFirstName() + " " + e.getLastName())
                                .collect(Collectors.toList());
    System.out.println(sorted);
}

ここだけでmap我々が使用された後の最初の名前と最後の名前を連結することによってソートされたストリーム、.collect()リストにそれを収集するために端末操作を。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=224215&siteId=1