简体   繁体   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

I have a list of objects List<Car> cars 我有一个对象List<Car> cars

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

I want a succinct way of converting this list to a map Map<String, List<Car>> using make as the key. 我想以简洁的方式将此列表转换为使用make作为键的Map<String, List<Car>> I could write a function to do that but I was wondering if Lambdas or stream api in Java 8 provides an out of the box way to achieve this. 我可以编写一个函数来做到这一点,但是我想知道Java 8中的Lambdas或流api是否提供了一种开箱即用的方式来实现这一点。

I have modified the question for a Map<String, List<Car>> 我已经修改了Map<String, List<Car>>

Yes its very well supported. 是的,它得到了很好的支持。

Do like this : 这样做:

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

You can do it like so 你可以这样做

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中的键值对 - Converting list of objects to key value pair in java Java8:按键映射对象列表 - Java8: Map list of objects by key 获取 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 将字符串转换为 java 中的对象列表 - Converting a string to list of Objects in java Java 8映射到对象列表,其中一个字段分组为List - Java 8 Map to a List of Objects with one field grouped into a List Java 8 Stream:从对象列表中提取地图并汇总特定键 - Java 8 Stream: Extract map from list of objects and sum specific key 将对象列表转换为 Map - Converting a list of objects to Map 包含键和对象列表的排序图 - Sorting map containing a key and list of objects 在Java中将List <Map.Entry <Key,Value >>转换为List <Key> - Converting List<Map.Entry<Key, Value>> to List<Key> in Java Java 8要映射的对象列表<String,List>值 - Java 8 List of Objects to Map<String, List> of values
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM