使用其中一个字段作为键,将java中的对象列表转换为String键的映射到List <objects>

时间:2018-04-27 04:12:27

标签: java collections java-stream

我有一个对象列表INSERT INTO `wa_list` (exchange, symbol, security_name) SELECT A.exchange, A.symbol, A.security_name FROM `wa_research` A WHERE A.waID != 0 AND A.CIK = 0;

List<Car> cars

我希望以简洁的方式将此列表转换为使用make作为键的地图public class Car{ String make; String model; String year; String price; } 。我可以编写一个函数来做到这一点,但我想知道Java 8中的Lambdas或流API是否提供了一种开箱即用的方式来实现这一点。

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

的问题

3 个答案:

答案 0 :(得分:4)

是的,非常支持。

这样做:

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

答案 1 :(得分:1)

Map<String, List<Car>> result = 
          myList.stream()
                .collect(Collectors.groupingBy(Car::getMake));

答案 2 :(得分:0)

你可以这样做

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