2017-12-03 8 views
1

オブジェクトリストから新しいリストに属性リストを取得する方法を知っています。 しかし、タイプをintからlongに変換したい場合はどうでしょうか。たとえば、get userId(intタイプ)というメソッドを持つユーザークラスがあり、myUserListがユーザーオブジェクトのリストです。オブジェクトリストから変換された属性のリストを取得するjava 8

List<Integer> userIdList = myUserList.stream() 
    .map(User::getUserId) 
    .collect(Collectors.toList()); 

だから私は、intタイプではuserIdのリストを得ることができます。 intlongに変換するとどうなりますか?私はこのコードを試しました:

myUserList.stream() 
    .map(Long::intValue(User::getUserId)) 
    .collect(Collectors.toList()); 

私にはエラーcan not resolve method static...がありました。 誰かにそれを修正する方法を教えてもらえますか? (それはリストに行くように、とにかく箱詰めする必要があるため)あなたは

.map(user -> (long) user.getUserId()) 

かをキャストしてlongにint型に変換することができます

+3

どう.MAP 'について(ユーザー - >(ロング)user.getUserId())'や '.MAP(ユーザー - ?> Long.valueOf(user.getUserId())' – khelwood

+0

おかげですか。あなたの答えを以下に書いてみたいですか? – user3369592

答えて

4

、あなたはLong.valueOfを使用することができます。

userList.stream() 
     .map(user -> Long.valueOf(user.getUserId())) 
     .collect(Collectors.toList()); 
+0

最初にmap()の代わりにmapToLong()を使うのはなぜですか? – prsvr

+1

@FairPlay 'long'をリストに入れることはできません。とにかく – khelwood

+0

私の悪い、徹底的に彼の質問を読んでいない。 – prsvr

関連する問題