简体   繁体   English

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

[英]How to add a collections of class's into a class that has collection

I have an ArrayList of Products, that i want to add to My map of sales class in my Product class. 我有一个ArrayList of Products,我想在我的Product类中添加到我的销售地图类中。 The purpose of this is to have each product record what was bought with it and how much. 这样做的目的是让每个产品记录用它购买的产品以及购买量。

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()));
        }
    }



}

The Results I am getting are : 我得到的结果是:

 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)

i should be getting : 我应该得到:

   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)

Any hints or clues on how i can stop it from over counting ? 关于如何阻止其过度计数的任何提示或线索?


update : Tried Péter Török Suggestion, Got this result: 更新 :尝试过PéterTö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 think the root of the problem is that for every pair of products with the index (i,j), you process them twice in your loop: once as (i,j), then as (j,i). 我认为问题的根源在于,对于具有索引(i,j)的每对产品,您都要在循环中对其进行两次处理:一次是(i,j),然后是(j,i)。 Try with this loop instead: 尝试使用此循环:

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));
        }
    }
}

(here the inner loop counter starts from i + 1 instead of 0 . Note also that I modified both loop conditions because I think your original loops have an off by one error - the last element in the array has the index array.size() - 1 .) (这里的内部循环计数器从i + 1而不是0 。还请注意,我修改了两个循环条件,因为我认为您的原始循环偏移了一个错误-数组中的最后一个元素的索引为array.size() - 1 。)

Update 更新资料

And there is also a copy-paste bug here: 这里还有一个复制粘贴错误:

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

whereas it should be 而应该是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Hibernate中将集合添加到数据传输类 - How to add collections to a data transfer class in Hibernate 从集合类获取同步集合是否同步一个类? - Does getting a synchronized collection from collections class synchronize a class? Java集合-如何在集合中添加多个值? - Java collections - How to add multiple values in the collection? 与Collection对象具有-关系的类是否与Collection的元素有关系? - Does a class with has-a relationship with a Collection object have a relationship with the Collection's elements? 集合-向集合中添加元素 - Collections - add elements to a collection 如何将 object 的 class 具有不同 class 成员的 ZCC8D68C551C4A9A6D5313E07DE4DE - How to add an object that its class has a different class member to an CSV? 通过Collections类的算法获取集合的“动态类型安全视图” - Getting a “dynamically typesafe view” of a collection through the algorithms of Collections class 为什么我们不能创建Collections类的实例(不是Collection Interface)? - Why can't we create instance of Collections class (not Collection Interface)? 如何访问(修改、添加元素)到 Java 内部类中的 ArrayList/Collection? - How to access (modify, add elements) to an ArrayList/Collection in an Inner class in java? Collection类的sort()方法如何调用Comparable的compareTo()? - How does the sort() method of the Collection class call the Comparable's compareTo()?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM