我需要根据此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()));
}
}
}
有什么建议吗?
答案 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);
}