Java 使用从现有ArrayList的HashSet计算的总计创建新集合

Java 使用从现有ArrayList的HashSet计算的总计创建新集合,java,arraylist,collections,hashset,Java,Arraylist,Collections,Hashset,我正在努力解决以下问题: 我正在建立一个订单系统。我有一个ArrayList“sales”,该列表包含一些变量和一个HashSet,其中包含作为订单一部分出售的商品。有一个Part类,其中包含用于Part name(getName)和Part price(getPrice)的getter “销售”数组列表包含:(int orderNumber、LocalDate、OrderItem OrderItem) 看起来是这样的: 订单:1,日期:2020-02-23,项目:[部分:监视器,数量:3,部分

我正在努力解决以下问题:

我正在建立一个订单系统。我有一个ArrayList“sales”,该列表包含一些变量和一个HashSet,其中包含作为订单一部分出售的商品。有一个Part类,其中包含用于Part name(
getName
)和Part price(
getPrice
)的getter

“销售”数组列表包含:
(int orderNumber、LocalDate、OrderItem OrderItem)

看起来是这样的:

订单:1,日期:2020-02-23,项目:[部分:监视器,数量:3,部分:CPU,数量:2]

订单:2,日期:2020-02-23,项目:[零件:耳机,数量:1,零件:外壳,数量:1]

订单:3,日期:2020-02-23,项目:[部件:CPU,数量:10,部件:键盘,数量:10]

每个OrderItem包含:
(部分,整数数量)
。零件类包含
(字符串partName,双倍价格)

我想做的是创建一个新集合,列出一天售出的零件总数,如下所示:

监视器3

中央处理器12

耳机1

案例1

键盘10


我怎样才能做到这一点呢?

我试着用一个
HashMap
为您写点东西,它将包含一个键值对列表,列出您当天的零件及其相应的销售数量

希望有帮助:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    for (Orderitem item: listOfOrderItems) { // here you need to get a list of your ordered items for the day
        Part part = item.getPart(); // here you need some form of a getter to access the given part from the given Orderitem
        String partName = part.getName();
        if (!map.containsKey(partName)) {
            map.put(partName, item.getQuantity());
        } else {
            map.put(partName, map.get(partName) + item.getQuantity());
        }
    }
}
publicstaticvoidmain(字符串[]args){
Map Map=newhashmap();
对于(Orderitem item:listOfOrderItems){//在这里,您需要获取当天已订购项目的列表
Part Part=item.getPart();//这里需要某种形式的getter来从给定的Orderitem访问给定的部分
字符串partName=part.getName();
如果(!map.containsKey(partName)){
put(partName,item.getQuantity());
}否则{
map.put(partName,map.get(partName)+item.getQuantity());
}
}
}

到目前为止您尝试了哪些代码?谢谢Petar,我加入了您的代码,并对代码进行了一些调整,一切都朝着正确的方向发展。周末愉快。很高兴我能帮忙!