【问题标题】:How to convert List of Objects into Map<Object, Object> using Java 8 Lambdas如何使用 Java 8 Lambda 将对象列表转换为 Map<Object, Object>
【发布时间】:2015-11-11 06:33:51
【问题描述】:

我有对象列表说需要转换为地图的汽车。

    Public Class Car {
        private Integer carId;
        private Integer companyId;
        private Boolean isConvertible;
        private String carName;
        private String color;
        private BigDecimal wheelBase;
        private BigDecimal clearance;
    }

我有另一个对象,我想将其视为 Map 的键。

    public class Key<L, C, R> {
        private L left;
        private C center;
        private R right; 
   }

我想从汽车对象列表创建地图。

List<Car> cars;
Map<Key, Car> -> This map contains Key object created from 3 field of Car object namely carId, companyId, isConvertible.

我无法弄清楚如何使用 Java 8 Lambda 来做到这一点

cars.stream.collect(Collectors.toMap(?, (c) -> c);

在上面的语句中,代替 ?,我想使用当前汽车对象中存在的值创建 Key 类的对象。我怎样才能做到这一点?

【问题讨论】:

    标签: java list dictionary lambda java-8


    【解决方案1】:

    你可以这样做:

    Function<Car, Key> mapper = car -> new Key(car.getId(), 
                                               car.getCompanyId(), 
                                               car.isConvertible());
    cars.stream().collect(Collectors.toMap(mapper, Function.identity());
    

    【讨论】:

      【解决方案2】:
      cars.stream().collect(Collectors.toMap(c->new Key(c.getId(),...), Function.identity());
      

      【讨论】:

        【解决方案3】:

        你也可以试试这个:

            Map<Key, Car> carMapper = new HashMap<>();
        
            carlist.forEach(car -> carMapper.put(new Key(car.getCarId(), car.getCompanyId(), car.getIsConvertible()), car));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-17
          • 1970-01-01
          • 1970-01-01
          • 2022-01-17
          • 2013-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多