2017-09-11 13 views
4

その選択されたプロパティのリストにオブジェクトのリストを変換する方法のJava 8のストリーミング:私はクラスを持っている

class Person { 
    // get/set omitted for simplicity 
    public String firstName; 
    public String lastName; 
} 

私はそのようなオブジェクトのリストを持っている

List<Person> list ... 

私は変換する必要がありますストリームでは次のようになります。

List<Person> list ... 
List<String> firstLastNames = list.stream().... 

したがって、リストfirstLastNamesには、このリストの姓と名が含まれます。そう。この

stream.stream().flatMap(p -> Stream.of(p.firstName, p.lastName)).collect(Collectors.toList()); 

答えて

10

どのように真の性質をしたい場合(java.util.Propertiesを)オブジェクトあなたは、以下のような何かを行うことができます。プロパティを使用しているので、この方法でレコードを重複させることはできません。

public static void main(String args[]) 
{ 
    // make some people 
    Person john = new Person("John", "Smith"); 
    Person mary = new Person("Mary", "Richards"); 

    List<Person> people = new ArrayList<Person>(); 
    people.add(john); 
    people.add(mary); 

    Properties peopleProps = new Properties(); 
    for (Person person : people) 
    { 
     peopleProps.setProperty(person.getfName(), person.getlName()); 
    } 

    System.out.println(peopleProps); 

} 
+4

まず、upvote。すべてOKですが、 'new Object(...)'式を削除する必要があります。 –

+0

Downvoted for、良い答えと私はupvoteしたいが現在コンパイルされません。重複があるはずだが、見つけられないような疑問がある。 – Oleg

+0

はい、Stream.ofは私が探していたものです。新しいオブジェクト(...)を取り除いて応答を編集しました – walv

-2

のようなものについて

System.out.println(firstLastNames); // will give me -> "John", "Smith", "Jessica", "Jones".. etc. 
+2

これは文字通り問題とは関係ありません。 – Oleg

+0

また、first-nameはキーと値の構造体のキーとして使用されます。同じファーストネームの2人の「人物」を持つと、すべてが狂ってしまいます。 – f1sh

+0

なぜdownvotes、あなたたちは、ポストのタイトルを読んだのですか? – Jason

関連する問題