简体   繁体   English

如何将 Object 列表转换为 map 的<string, list<string> &gt;?</string,>

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

I have a list of users我有一个用户列表

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

Not knowing the Java-Streams API that well, I want to map them into a map as follows: the key would be the user key, and the value would be a list the User object's other properties.不知道 Java-Streams API 好,我想将 map 转换为 map,如下所示:密钥将是用户密钥,值将是用户对象的其他属性列表。

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

I tried to replace **..... ** with Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail()) or similar constructs but I can't seem to get it to work.我试图用Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())或类似的结构替换 **..... ** 但我似乎无法得到它工作。

Just use a lambda:只需使用 lambda:

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

And by the way, your Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail()) piece is wrong - you try to return a list of method handles, rather than a mapping function (besides the fact that it's not syntactically correct - parentheses do not belong there).顺便说一句,您的Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())部分是错误的 - 您尝试返回方法句柄列表,而不是映射 function (除了它在语法上不正确的事实 - 括号不属于那里)。

In your case the collect should be like this:在您的情况下,收集应该是这样的:

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

You can also create a custom method which return the expected List of fields in User class:您还可以创建一个自定义方法,该方法返回用户 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)));
    }
}

and then you can call it by using method reference like this:然后您可以使用如下方法引用来调用它:

.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,> - How to Convert List<Map<String, Object>> to List<Map<String, String>> 如何转换列表<map<string,object> > 至 Map<string, string> ? </string,></map<string,object> - How to convert List<Map<String,Object>> to Map<String, String>? 转换清单 <Map<String, Object> &gt;列出 <String> - Convert List<Map<String, Object>> to List<String> 转换列表<Map>列出<Map<String,Object> &gt; - Convert List<Map> to List<Map<String,Object>> 如何转换清单 <Object> 进入清单 <Map<String,String> &gt;在Java8中 - How to convert List<Object> into List<Map<String,String>> in java8 转换列表<Map<String, Object> &gt; 到字符串[][] - Convert List<Map<String, Object>> to String[][] 如何转换列表<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()? 转换列表<map<string, comparable<> >> 列表<map<string, object> > </map<string,></map<string,> - Convert List<Map<String, Comparable<>>> to List<Map<String, Object>> 转换地图 <String, List<String> &gt;到地图 <String, Object[]> - Convert a Map<String, List<String>> to Map<String, Object[]> 如何转换的地图 <String, List<Object> &gt;进入 <Object, List<String> &gt;? - How do I convert a Map of <String, List<Object>> into a Map of <Object, List<String>>?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM