gpt4 book ai didi

Java 8 使用对象子级的字段将 List 转换为 Map
转载 作者:行者123 更新时间:2023-12-01 23:02:49 25 4
gpt4 key购买 nike

情况很简单:我有一个对象列表 List<ParentClass> list并想将其转换为Map<orderKey, price>

该类如下所示

class ParentClass{
Child1Class a;
Child2Class b;
}

orderKey 类如下所示

class orderKey{
String id;
String itemName;
}

children 的类(class)是这样的

class Child1Class{
String id;
String itemName;
Date date;
.....
}

class Child2Class{
BigDecimal price;
....
}

所有类都有对应于每个字段的 getter 和 setter。所以我本质上想映射 children 的领域的领域。我怎样才能做到这一点?

-----------------------------MY ATTEMPT IS SOMETHING LIKE THIS--------------------------------------
list.stream().
.collect(Collectors
.toMap(ParentClass::getA, ParentClass::getB)
.entrySet().stream()
......
then I'm stuck

不确定如何构造临时对象 orderKey作为新 map 的 key 。任何帮助,将不胜感激。

最佳答案

像这样尝试一下。由于您没有提供 setter/getter ,我必须访问这些字段。它还假定有一个 OrderKey 构造函数。

Map<OrderKey,BigDecimal> map = list
.stream()
.collect(Collectors
.toMap(parent ->
new OrderKey(parent.a.id,
parent.a.itemName),
parent->parent.b.price));

使用getters,它看起来像这样。

    Map<OrderKey,BigDecimal> map=   
list.stream()
.collect(Collectors
.toMap(parent ->
new OrderKey(parent.getA().getId(),
parent.getA().getItemName()),
parent->parent.getB().getPrice()));

关于Java 8 使用对象子级的字段将 List<Object> 转换为 Map<K,V>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61670094/

25 4 0