繁体   English   中英

Java 8使用stream()将List <Object>提取/转换为Map <String,List <String >>

[英]Java 8 extracting/coverting List<Object> into Map<String, List<String>> using stream()

试图找出如何有效地在我的代码中使用新的Java 8特性.stream()。

这是我的一般代码

List<Item> list = db.query(sqlStatement, (rs, i) -> new Item(rs));

    Map<String, List<Item>> itemsByName = new HashMap<>();

    for (Item m : list) {
        if (!itemsByName.containsKey(m.getName())) {

            ArrayList<Item> items = new ArrayList<>();
                            items.add(m);

            itemsByName.put(m.getName(), items);
        } else {
            itemsByName.get(m.getName()).add(m);
        }
    }

由此(1)

List<Item> list = db.query(sqlStatement, (rs, i) -> new Item(rs));

我得到的项目列表看起来像:

list(0):Name1:Value1

list(1):Name1:Value2

list(2):Name2:Value1

list(3):Name3:Value3

由此(2)

Map<String, List<Item>> itemsByName = new HashMap<>();

    for (Item m : list) {
        if (!itemsByName.containsKey(m.getName())) {

            ArrayList<Item> items = new ArrayList<>();
                            items.add(m);

            itemsByName.put(m.getName(), items);
        } else {
            itemsByName.get(m.getName()).add(m);
        }
    }

我想得到:

MapKey(Name1):列表{Name1:Value1,Name1:Value2}

MapKey(Name2):列表{Name2:Value1}

MapKey(Name3):列出{Name3:Value3}

如何使用stream()重写代码(2)以获得相同的结果?

您似乎正在实施标准的“分组依据”原语。 Streams API支持开箱即用:

Map<String, List<Item>> itemsByName = 
    list.stream().collect(Collectors.groupingBy(Item::getName));

如何转换列表<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 <Object>收集到Java 8中的Map <String,List <Object >> 用于 Map 的 Java 8 流过滤器<String, List<Object> &gt; 转换地图 <Integer, List<Object> &gt;到地图 <Integer, Map<String, Map<LocalDate, Integer> &gt;&gt;使用Java流API 如何转换列表<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[]> 将List转换<A>为Map</a> <String,List<A> <A>&gt;使用java 8流API</a> 使用Java Stream将List和String列表转换为Map 合并 Map <string, list<string> Java 8 Stream</string,> 如何使用 Java 流列表进行转换<Map<String,Object> &gt; 列出<String>删除每个流的一部分 排序图<String, List<Object> &gt; 使用 Java 8 Java 8流 - 查找Map的最大计数值 <String, List<Object> &gt;
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM