gpt4 book ai didi

java - Java中如何对ArrayList中具有相同属性的所有元素求和?

转载 作者:行者123 更新时间:2023-12-01 06:34:31 25 4
gpt4 key购买 nike

我有一个 ArrayList< Item>,我想做一个函数,用相同的代码对所有项目的数量求和,然后显示所有项目的数量。

public class Item{
private String code;
private int quantity;

public Item(String InputCode, int InputQuantity)
{
this.code= InputCode;
this.quantity = InputQuantity;
}
}

假设我执行以下操作

List<Item> items = new ArrayList<Item>();
items.add(new Item("A01", 1));
items.add(new Item("A02", 1));
items.add(new Item("B05", 2));
items.add(new Item("A01", 3));
items.add(new Item("Z02", 2));
items.add(new Item("A02", 2));
display();

那么期望的输出是

A01 4
A02 3
B05 2
Z02 2

我不知道,有人可以给我一些提示吗?

最佳答案

您可以使用流来做到这一点:

import static java.util.stream.Collectors.*;

...

Map<String, Integer> map = items.stream()
.collect(groupingBy(Item::getCode,
summingInt(Item::getQuantity)));

假设你的类有这些 setter/getter :

public class Item {
...
public String getCode() {...}
public int getQuantity() {...}
}

这会将商品代码、A01A02 等映射到其各自的数量总和。

<小时/>

您可以获得按代码排序的输出:

map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.forEachOrdered((e) -> System.out.println(e.getKey() + " " + e.getValue()));

注意:使用 .forEachOrdered(System.out::println) 代替,会产生类似 A01=4 的输出,这与您给出的示例几乎相同,比上面简单一点。

关于java - Java中如何对ArrayList中具有相同属性的所有元素求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37921328/

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