簡體   English   中英

如何將 Object 列表轉換為 map 的<string, list<string> &gt;?</string,>

[英]How to convert Object list into a map of <String, List<String>>?

我有一個用戶列表

Collection<User> userList = groupManager.getUserList(groupName);

不知道 Java-Streams API 好,我想將 map 轉換為 map,如下所示:密鑰將是用戶密鑰,值將是用戶對象的其他屬性列表。

Map<String, List<String>> userDsiplayData = userList.stream()
     .collect(Collectors.toMap(User::getKey, **.......**))

我試圖用Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())或類似的結構替換 **..... ** 但我似乎無法得到它工作。

只需使用 lambda:

Map<String, List<String>> userDsiplayData = userList.stream()
     .collect(Collectors.toMap(User::getKey, 
         user -> List.of(user.getUsername(), user.getDisplayName(), user.getEmail()))

順便說一句,您的Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())部分是錯誤的 - 您嘗試返回方法句柄列表,而不是映射 function (除了它在語法上不正確的事實 - 括號不屬於那里)。

在您的情況下,收集應該是這樣的:

.collect(Collectors.toMap(
        User::getKey, 
        u -> Arrays.asList(u.getUsername(), u.getDisplayName(), u.getEmail())));

您還可以創建一個自定義方法,該方法返回用戶 class 中的預期字段列表:

public class User {
    private String key;
    private String username;
    private String displayName;
    private String email;

    // getters setters

    public List<String> getUserInfo() {
        return Arrays.asList(username, displayName, email)));
    }
}

然后您可以使用如下方法引用來調用它:

.collect(Collectors.toMap(User::getKey, User::getUserInfo));

如何轉換列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下數據作為 java 中的 String[] 列表,是否可以使用 stream().map() 進行轉換? 這是列表的一個示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我試圖用modelMapper和沒有modelMapper的map我的值並且數據是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,當我嘗試使用數據時,數組的每個 object 上的 object 結構都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]>

[英]How to convert List<String[]> to List<Object> using modelmapper or stream().map()?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 如何轉換列表<map<string, object> > 列出<map<string, string> > </map<string,></map<string,> 如何轉換列表<map<string,object> > 至 Map<string, string> ? </string,></map<string,object> 轉換清單 <Map<String, Object> &gt;列出 <String> 轉換列表<Map>列出<Map<String,Object> &gt; 如何轉換清單 <Object> 進入清單 <Map<String,String> &gt;在Java8中 轉換列表<Map<String, Object> &gt; 到字符串[][] 如何轉換列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下數據作為 java 中的 String[] 列表,是否可以使用 stream().map() 進行轉換? 這是列表的一個示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我試圖用modelMapper和沒有modelMapper的map我的值並且數據是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,當我嘗試使用數據時,數組的每個 object 上的 object 結構都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]> 轉換列表<map<string, comparable<> >> 列表<map<string, object> > </map<string,></map<string,> 轉換地圖 <String, List<String> &gt;到地圖 <String, Object[]> 如何轉換的地圖 <String, List<Object> &gt;進入 <Object, List<String> &gt;?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM