如何使用Java8流从一个列表中创建一个以自定义对象列表为值的映射?
我有如下对象产品、客户机和产品模型 在main函数中,我试图创建一个映射,以key作为客户端名称,值将是productModel的列表
@Getter
@Setter
@AllArgsConstructor
class Client{
String name;
String location;
}
@Getter
@Setter
@AllArgsConstructor
class Product {
String name;
String value;
String rating;
Client client;
}
public class Test {
public static void main(String[] args) {
Client c1 = new Client("abc", "ldn");
Client c2 = new Client("lmn","nyc");
Client c3 = new Client("abc","eur");
Client c4 = new Client("xyz","ldn");
Arrays.asList(new Product("tshirt", "v1", "4",c1),
new Product("shoes", "v2","3",c2),
new Product("dress", "v3","2",c3),
new Product("belt", "v4","4",c4)
.stream();
在此之后,如何创建一个映射,其中键是客户名称,值是ShopModel的列表
@Getter
@Setter
@AllArgsConstructor
class ProductModel{
String productName; // maps to name in Product
String prouductValue; // maps to value in Product
String location;// maps to location in client
}
最终地图输出应如下所示
Key Value
abc {tshirt, v1, ldn},
{dress, v3, eur}
lmn {shoes, v2, nyc}
xyz {belt, v4, ldn}
# 1 楼答案
下面的代码可能会有所帮助
帮助链接->https://www.baeldung.com/java-groupingby-collector