基于变量将ArrayList拆分为多个ArrayLists

时间:2014-11-02 17:37:00

标签: java arraylist

我需要根据此ArrayList中的变量将包含原始数据类型,String和ArrayLists的ArrayList拆分为多个ArrayLists。

我有我的ArrayList purchaseOrderList,其中包含String类型的“品牌”。我想把这个ArrayList拆分成尽可能多的新ArrayList,因为我有不同的品牌。无论我怎么做,我都会以无限循环结束。

ArrayList<Brand> brandList = new ArrayList<Brand>();

brandList.add(new Brand(purchaseOrderList.get(0).getBrand()));
for (int i = 0; i < brandList.size(); i++) {
    for (Item item : purchaseOrderList) {
        if (brandList.get(i).getBrand().equals(item.getBrand())) {
            brandList.get(i).setItemList(item); //Add the items from the purchaseOrderList
        } else {
            brandList.add(new Brand(item.getBrand()));
        }
    }
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

你有一个无限循环,因为你想循环遍历数组的所有元素,但同时你要添加新的元素。

你应该使用:int arraySize = brandList.size();并在第一个中使用它的值,如下所示:for (int i = 0; i < arraySize; i++)

通过这种方式,您将遍历brandList数组中开头的所有元素, 我想这就是你想做的事。

答案 1 :(得分:0)

对于这类问题,您应该使用地图:

Map<Brand, ArrayList<Item>> map = new HashMap<Brand, ArrayList<Item>>();


for(Item item : purchaseOrderList){
  if(map.get(item.getBrand()) == null)
    map.put(item.getBrand(), new ArrayList<Item>());
  else 
    map.get(item.getBrand()).add(item);
}