簡體   English   中英

將Java中的對象列表轉換為String到List的映射 <objects> 使用其字段之一作為關鍵字

[英]Converting a list of objects in java to a map of String key to List<objects> using one of its field as the key

我有一個對象List<Car> cars

public class Car{
  String make;
  String model;
  String year;
  String price;
}

我想以簡潔的方式將此列表轉換為使用make作為鍵的Map<String, List<Car>> 我可以編寫一個函數來做到這一點,但是我想知道Java 8中的Lambdas或流api是否提供了一種開箱即用的方式來實現這一點。

我已經修改了Map<String, List<Car>>

是的,它得到了很好的支持。

這樣做:

Map<String, List<Car>> youCarMap = yourCarList.stream().collect(
                Collectors.groupingBy(Car::getMake,
                    Collectors.mapping(c->c, Collectors.toList())));
Map<String, List<Car>> result = 
          myList.stream()
                .collect(Collectors.groupingBy(Car::getMake));

你可以這樣做

cars.stream()
   .collect(Collectors.toMap(
      car -> car.make,
      Function.identity()
   )

獲取 Map <string, list<object> &gt; 從列表<object>其中鍵是對象的字段之一<div id="text_translate"><p>我有一個 object 如下</p><pre>public class Model { private String key; private String data1; private String data2; private String data3; // getters }</pre><p> 這些模型的列表正在通過數據層返回。 現在我想創建一個Map&lt;String, List&lt;Model&gt;&gt; ,其鍵是Model class 中的“鍵”字段。 有多個具有不同數據值的重復“鍵”。 我有以下現有解決方案,但需要一種更簡單更好的方法。 沒有廣泛使用 Java 8 所以對大多數方法不太熟悉,並且由於我沒有時間研究而需要盡快解決。</p><pre> List&lt;Model&gt; models = modelRepo.getAllModels(); Set&lt;String&gt; keys = models.stream().map(Model::getKey).collect(Collectors.toSet()); Map&lt;String, List&lt;Model&gt;&gt; result = new HashMap&lt;&gt;(); keys.stream().forEach(key -&gt; { List&lt;Model&gt; modelList = new ArrayList&lt;&gt;(); models.stream().forEach(model -&gt; { if (model.getKey().equals(key)) { modelList.add(model); } }); result.put(key, modelList); });</pre></div></object></string,>

[英]Get Map<String, List<Object>> from List<Object> where the key is one of the fields of the objects

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 將對象列表轉換為Java中的鍵值對 Java8:按鍵映射對象列表 獲取 Map <string, list<object> &gt; 從列表<object>其中鍵是對象的字段之一<div id="text_translate"><p>我有一個 object 如下</p><pre>public class Model { private String key; private String data1; private String data2; private String data3; // getters }</pre><p> 這些模型的列表正在通過數據層返回。 現在我想創建一個Map&lt;String, List&lt;Model&gt;&gt; ,其鍵是Model class 中的“鍵”字段。 有多個具有不同數據值的重復“鍵”。 我有以下現有解決方案,但需要一種更簡單更好的方法。 沒有廣泛使用 Java 8 所以對大多數方法不太熟悉,並且由於我沒有時間研究而需要盡快解決。</p><pre> List&lt;Model&gt; models = modelRepo.getAllModels(); Set&lt;String&gt; keys = models.stream().map(Model::getKey).collect(Collectors.toSet()); Map&lt;String, List&lt;Model&gt;&gt; result = new HashMap&lt;&gt;(); keys.stream().forEach(key -&gt; { List&lt;Model&gt; modelList = new ArrayList&lt;&gt;(); models.stream().forEach(model -&gt; { if (model.getKey().equals(key)) { modelList.add(model); } }); result.put(key, modelList); });</pre></div></object></string,> 將字符串轉換為 java 中的對象列表 Java 8映射到對象列表,其中一個字段分組為List Java 8 Stream:從對象列表中提取地圖並匯總特定鍵 將對象列表轉換為 Map 包含鍵和對象列表的排序圖 在Java中將List <Map.Entry <Key,Value >>轉換為List <Key> Java 8要映射的對象列表<String,List>值
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM