2017-07-06 6 views
1

にリストの各フィールド値Iは、オブジェクトの2一覧があります。Javaの8マップ他の同様のリスト

public class UserResource { 

    private String name; 

    private String address; 

    **SETTERS & GETTERS** 
} 
UserResourceクラスについて

public class User { 

    private int id; 

    private String name; 

    private String address; 

    **SETTERS & GETTERS** 
} 

List<User> 
List<UserResource> 

Userクラスの場合を

私のList<User>にはデータがあり、地図にしたいですnameaddressからUserResourcenameaddressで、java 8ストリームとラムダを使用していますが、その方法はわかりません。

オンラインですぐに検索しますが、似たような質問を見つけることはできません。何かのように:

List<User> users = **data inserted** 
List<UserResource> resources = users.forEach(u ->{ 
    u.setName(users.getName()); 
    u.setAddress(users.getAddress()); 
}); 

私は次のようなものを試しましたが、実際にそれを修正する方法はありませんが、コンストラクタを使用していません。

List<UserResource> userResources = users.stream().map(u -> new UserResource(u.getName(), u.getAddress())).collect(Collectors.toList()); 
+4

* *伴わない何かを試してみてください'forEach' ... – Holger

+0

はいはい!私は 'stream'と' map'でできることが分かっていましたが、どうすればいいのか分かりませんでした。 – hades

+1

[チュートリアル](http://docs.oracle.com/javase/tutorial/collections/streams/index.html)および[パッケージのドキュメント](https://docs.oracle.com/javase/8/)を参照してください。 docs/api /?java/util/stream/package-summary.html)。後者は、あなたのユースケースへの適応を少ししか必要としない "Mutable reduction"セクションの例を持っています。 – Holger

答えて

4

あなたの編集が論理的に正しいですが、私はあなたがセッターを経由して、それをしたいと仮定し、この場合には、ラムダ体を定義し、そこに操作を実行する...

.map(u -> { 
    UserResource ur = new UserResource(); 
    ur.setName(u.getName()); 
    ur.setAddress(u.getAddress()); 
    return ur; 
}).collect(...) 
+0

はい!これは私が何を意味しているのか分かりませんでした。 – hades

関連する問題