gpt4 book ai didi

java - 我尝试访问下一行并使用stream.reduce.not 能够实现它并与 java arraylist 对象中的当前行进行比较,但出现错误

转载 作者:行者123 更新时间:2023-12-02 09:14:38 27 4
gpt4 key购买 nike

我试图比较并仅打印 getprice() 每一行的唯一值,如下所示:

List<Model> results = lists.stream()
.reduce((c1,c2) -> c1.getprice() != c2.getprice()? c1:c2)
.collect(Collectors.toList());

//The Object is like this:

object[{type:1,price:20},
{type:2,price:30}
{type:3,price:30}
{type:4,price:60}
];
//OUTPUT expected after reducing the duplicate value of price

//object[{type:1,price:20},{type:2,price:30},{type:4,price:60}
];

我试图比较并仅打印 arraylist 中每一行的唯一值,即 getprice。

//对象是这样的:

  object[{type:1,price:20},
{type:2,price:30}
{type:3,price:30}
{type:4,price:60}
];

减少价格重复值后的预期输出

object[{type:1,price:20},{type:2,price:30},{type:4,price:60} ];

最佳答案

由于您显然想要使用 Java 8 Stream API,因此一种解决方案可能是按 price 对列表进行分组,然后过滤返回值 CollectionList.size() >= 1 因为我假设每种类型都应该有一个价格,如果没有,我们可以忽略它。

然后再次流式传输您的价格列表并执行findFirst();

这里是一个例子:

models.stream().collect(Collectors.groupingBy(Model::getPrice)).values().stream()
.filter(modelWrapperList -> modelWrapperList.size() >= 1).forEach(modelList -> {
modelList.stream().findFirst().ifPresent(results::add);
});

但一个更简单的解决方案是跟踪您已添加的价格并根据它过滤您的列表

另一个例子:

Set<Integer> existingPrices = new HashSet<>();

results = models.stream().filter(model -> existingPrices.add(model.getPrice()))
.collect(Collectors.toList());

关于java - 我尝试访问下一行并使用stream.reduce.not 能够实现它并与 java arraylist 对象中的当前行进行比较,但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com