gpt4 book ai didi

java - 如何将类的集合添加到具有集合的类中

转载 作者:行者123 更新时间:2023-12-01 15:50:45 25 4
gpt4 key购买 nike

我有一个产品数组列表,我想将其添加到我的产品类中的销售类 map 中。这样做的目的是让每个产品记录所购买的商品以及购买金额。

ArrayList<Product> array = new ArrayList<Product>(tempProducts.values());
for (int i = 0; i < array.size() - 1; i++) {
for (int j = i+1; j < array.size() ; j++) {
update(array.get(i), array.get(j));
}
}
}


public static void update(Product a, Product b)
{



if (a.getId().compareToIgnoreCase(b.getId()) != 0) {
if (a.getCollection().get(b.getId()) != null) {
a.getCollection().get(b.getId()).incsales();

} else {

a.getCollection().put(b.getId(), new sale(b.getId(), b.getDesc()));
}
if (b.getCollection().containsKey(a.getId())) {
a.getCollection().get(b.getId()).incsales();

} else {
b.getCollection().put(a.getId(), new sale(a.getId(), a.getDesc()));
}
}



}

我得到的结果是:

 Description : Balsamic Ital Dressing 2.5L Kraft
Sales : 80
This product was purchased the most with :
1 0000795501891 Babyfood, dinner, vegetables and lamb, junior (7)
2 0000053838530 Cheese, cottage, creamed, large or small curd (7)
3 0001580359521 Macadamia Nuts Kernels 1KG Natural Grocer (7)
4 0001549470330 Orange Juice Long Life 2L Just Juice (7)
5 0000102800862 Babyfood, fruit, pears and pineapple, junior (5)
Description : Mighty Soft Bread Multigrain Sandwich 700g
Sales : 78
This product was purchased the most with :
1 0000250315049 Babyfood, cereal, barley, prepared with whole milk (7)
2 0001906925229 Coles Bread Multigrain Sliced 700g (7)
3 0001348704022 Honey Portion 48X14G Beerenberg (7)
4 0000965461817 Milk, canned, evaporated, nonfat, with added vitamin A and vitamin D (7)
5 0000883156398 Abotts Village Bakery Wholemeal Farmhouse 750g (5)

我应该得到:

   Description : Balsamic Ital Dressing 2.5L Kraft 
Sales : 80
This product was purchased the most with :
1 0000102800862 Babyfood, fruit, pears and pineapple, junior (4)
2 0000449778467 Decaf Ground Coffee 250G Cremadoro (4)
3 0001549470330 Orange Juice Long Life 2L Just Juice (4)
4 0000795501891 Babyfood, dinner, vegetables and lamb, junior (3)
5 0000708398761 Butter, salted (3)
Description : Mighty Soft Bread Multigrain Sandwich 700g
Sales : 78
This product was purchased the most with :
1 0000497527798 Cream Cheese Philadelphia Light 1KG Kraft (4)
2 0000890198554 Mayonnaise Fat Free 2.7KG Kraft (4)
3 0000298379350 Milk, buttermilk, dried (4)
4 0000250315049 Babyfood, cereal, barley, prepared with whole milk (3)
5 0000966839744 Babyfood, cereal, with egg yolks, strained (3)

关于如何阻止它过度计数有任何提示或线索吗?

<小时/>

更新:尝试了 Péter Török 的建议,得到了这个结果:

 Description : Balsamic Ital Dressing 2.5L Kraft
Sales : 80
This product was purchased the most with :
1 0001549470330 Orange Juice Long Life 2L Just Juice (7)
2 0000102800862 Babyfood, fruit, pears and pineapple, junior (5)
3 0000708398761 Butter, salted (5)
4 0002140785264 Egg, whole, dried, stabilized, glucose reduced (5)
5 0000422477496 Essence Parisian 575ML Aeroplane (5)
Description : Mighty Soft Bread Multigrain Sandwich 700g
Sales : 78
This product was purchased the most with :
1 0001906925229 Coles Bread Multigrain Sliced 700g (5)
2 0000127034559 Limonata 24X200ML San Pellegrino (5)
3 0001736609947 Babyfood, dessert, custard pudding, vanilla, junior (3)
4 0002028785759 Babyfood, dinner, beef stew, toddler (3)
5 0000432411254 Babyfood, juice, orange and pineapple (3)

最佳答案

我认为问题的根源在于,对于索引为 (i,j) 的每一对产品,您在循环中将它们处理两次:一次作为 (i,j),然后作为 (j,i)。尝试使用此循环:

for (int i = 0; i < array.size() - 1; i++) {
for (int j = i + 1; j < array.size(); j++) {
update(array.get(i), array.get(j));
}
}
}

(这里内部循环计数器从 i + 1 开始,而不是 0。另请注意,我修改了两个循环条件,因为我认为您原来的循环有一个关闭一个错误 - 数组中的最后一个元素的索引为 array.size() - 1。)

更新

这里还有一个复制粘贴错误:

    if (b.getCollection().containsKey(a.getId())) {
a.getCollection().get(b.getId()).incsales();

其实应该是

        b.getCollection().get(a.getId()).incsales();

关于java - 如何将类的集合添加到具有集合的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099808/

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