简体   繁体   English

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

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

Trying to figure out how can i use the new Java 8 feature .stream() in my code effectively. 试图找出如何有效地在我的代码中使用新的Java 8特性.stream()。

Here is my code in general 这是我的一般代码

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);
        }
    }

By this (1) 由此(1)

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

I get the List of Items which looks like: 我得到的项目列表看起来像:

list(0): Name1:Value1 list(0):Name1:Value1

list(1): Name1:Value2 list(1):Name1:Value2

list(2): Name2:Value1 list(2):Name2:Value1

list(3): Name3:Value3 list(3):Name3:Value3

By this (2) 由此(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);
        }
    }

I want to get: 我想得到:

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

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

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

How to rewrite code (2) using the stream() to get the same result? 如何使用stream()重写代码(2)以获得相同的结果?

You appear to be implementing the standard "group by" primitive. 您似乎正在实施标准的“分组依据”原语。 This is supported out-of-the-box by the Streams API: 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 >> - Collect List<Object> to Map<String, List<Object>> in Java 8 using stream 用于 Map 的 Java 8 流过滤器<String, List<Object> &gt; - Java 8 stream filter for Map<String, List<Object>> 转换地图 <Integer, List<Object> &gt;到地图 <Integer, Map<String, Map<LocalDate, Integer> &gt;&gt;使用Java流API - Convert Map<Integer, List<Object>> to Map<Integer, Map<String, Map<LocalDate, Integer>>> using Java stream 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[]> - How to convert List<String[]> to List<Object> using modelmapper or stream().map()? 将List转换<A>为Map</a> <String,List<A> <A>&gt;使用java 8流API</a> - converting List<A> to Map<String,List<A>> using java 8 stream API 使用Java Stream将List和String列表转换为Map - Converting List of List and String to Map with Java Stream 合并 Map <string, list<string> Java 8 Stream</string,> - Merge Map<String, List<String> Java 8 Stream 如何使用 Java 流列表进行转换<Map<String,Object> &gt; 列出<String>删除每个流的一部分 - How to convert with Java stream List<Map<String,Object>> to List<String> removing part of each Stream 排序图<String, List<Object> &gt; 使用 Java 8 - Sorting Map<String, List<Object>> using java 8 Java 8流 - 查找Map的最大计数值 <String, List<Object> &gt; - Java 8 stream - Find max count values for Map<String, List<Object>>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM