簡體   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