簡體   English   中英

轉換收藏流 <String[]> 列出 <String> []

[英]Convert Stream of Collection<String[]> to List<String>[]

我有一段代碼:

table.stream().filter(row -> !hash.containsKey(row[keyColumnNumber]))
.map(row -> row[keyColumnNumber]).map(hash::get)

最后一步: .map(hash::get)返回Collection<String[]> 結果,我需要將所有這些收集到List中。

.collect(Collectors.toList())

返回List>預期的結果,但是

.flatMap(Stream::of).collect(Collectors.toList()).collect(Collectors.toList())

返回相同的結果。

您可以像這樣使用flatMap:

List<String> list = table.stream()
        .map(row -> hash.get(row[keyColumnNumber]))
        .filter(Objects::nonNull)
        .flatMap(Arrays::stream)
        .collect(Collectors.toList());

如果

table.stream().filter(row -> !hash.containsKey(row[keyColumnNumber]))
.map(row -> row[keyColumnNumber]).map(hash::get)

返回Stream<Collection<String[]>>並且您需要List<String[]> ,您確實需要flatMap

List<String[]> result = table.stream()
        .filter(row -> !hash.containsKey(row[keyColumnNumber]))
        .map(row -> row[keyColumnNumber])
        .map(hash::get) // Stream<Collection<String[]>>
        .flatMap(Collection::stream) // Stream<String[]>
        .collect(Collectors.toList()); // List<String[]>

正如Aomine所說,應該有可能將mapflatMap調用加入到一個flatMap

List<String[]> result = table.stream()
        .filter(row -> !hash.containsKey(row[keyColumnNumber]))
        .flatMap(row -> hash.get(row[keyColumnNumber]).stream()) // Stream<String[]>
        .collect(Collectors.toList()); // List<String[]>

嘗試這個。 我希望它可以解決...

List<String> list = table.stream().filter(row -> !hash.containsKey(row[keyColumnNumber]))
  .map(row -> row[keyColumnNumber]) 
  .flatMap(x -> Arrays.stream(hash.get()))//<<-----------------
  .collect(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.

相關問題 轉換列表<List<String> &gt; 流<Stream<String> &gt; Java 流到可空字符串列表的集合 Java Collection:如何轉換Collection <List<String> &gt;到ArrayList <List<String> &gt;或列表 <List<String> &gt;? 轉換清單 <HashMap<String, Object> &gt;串流 使用 java 中的 Stream 將列表字符串轉換為 ArrayList 浮點數 如何篩選清單 <String,Object> 用Java流收集嗎? 如何轉換“流<string> " 到 "字符串"</string> 在Java中將Stream轉換為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[]> flatMap()轉換LinkedList的流 <String> 進入String流
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM