繁体   English   中英

使用流将Java <Object>收集到Java 8中的Map <String,List <Object >>

[英]Collect List<Object> to Map<String, List<Object>> in Java 8 using stream

我试图使用java 8流而不是传统的for循环进行此迭代。

我有一个对象List<Obligation> ,而Obligation有一个String List

Obligation包含类似的字段

String类型的f1f2

List<String>类型的f3

我想要实现的是Map<String, List<Obligation>>这样,在Map键中使用的StringList<String>每个值,来自List<Obligation>每个Obligation

这就是代码在传统for循环中的样子:

// newly initialized Map
Map<String, List<Obligation>> map = new LinkedHashMap<String, List<Obligation>>();

// assume the list is populated
List<Obligation> obligations = someMethod();

                for(Obligation obligation : obligations) {
                    for(String license : obligation.getLicenseIDs()) {
                        if(map.containsKey(license)) {
                            map.get(license).add(obligation);
                        } else {
                            List<Obligation> list = new ArrayList<Obligation>();
                            list.add(obligation);
                            map.put(license, list);
                        }
                    }
                }

使用flatMap创建一组Obligation和许可证ID,然后使用groupingBy按许可证ID收集它们。

Map<String, List<Obligation>> map =
    obligations.stream() // Stream<Obligation>
               .flatMap(o -> o.getLicenseIDs()
                              .stream()
                              .map(id -> new SimpleEntry<>(o,id))) // Stream<Map.Entry<Obligation,String>>
               .collect(Collectors.groupingBy(Map.Entry::getValue,
                                              Collectors.mapping(Map.Entry::getKey,
                                                                 Collectors.toList())));

如何转换列表<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.

相关问题 Java 8 过滤器和列表收集<Map<String, Object> &gt; Java 8收集到Map <String, List<Object> &gt; 用于 Map 的 Java 8 流过滤器<String, List<Object> &gt; 转换地图 <Integer, List<Object> &gt;到地图 <Integer, Map<String, Map<LocalDate, Integer> &gt;&gt;使用Java流API Java 8使用stream()将List <Object>提取/转换为Map <String,List <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[]> 使用Java 8流对象将列表对象转换为自定义Map Java 8流API,如何使用几个List字段将List收集到Object 在flatMap返回List <Object>而不是List <String>之后收集Java Stream 排序图<String, List<Object> &gt; 使用 Java 8
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM