使用特定值分割ArrayList<ProductBean>
时遇到的问题
ArrayList<ProductBean> al =new ArrayList<ProductBean>();
这里ProductBean
是Getter&Setter类,其中包含几个字段,例如productId,productName,productPrice,shopId等。假设
(productId, productName, productPrice, shopId)
-------------------------
ProductBean s1=new ProductBean(101,"Pantene Shampoo","10 rs.",23);
ProductBean s2=new ProductBean(102,"Himalaya Fasewash","80 rs.",21);
ProductBean s2=new ProductBean(103,"Dettol Bath soap","30 rs.",25);
ProductBean s2=new ProductBean(104,"Dove Bath soap","30 rs.",25);
ProductBean s2=new ProductBean(105,"Santoor Bath soap","20 rs.",25);
//creating arraylist
ArrayList<ProductBean> al=new ArrayList<ProductBean>();
al.add(s1);//adding ProductBean class object
al.add(s2);
al.add(s3);
ArrayList
具有多个具有相同或不同shopId
的产品数据
假设我有5种不同的产品,其中2种产品具有相同的shopId
,其余的具有不同的shopId。
现在,我想将ArrayList
与不同的shopId
分开,如代码段中所示,具有相同的shopId 25和其余的21、23,导致3个不同的arraylist
答案 0 :(得分:4)
一种方法是使用HashMap
HashMap<Integer, ArrayList<ProductBean>> map = new HashMap<>();
然后将带有ID的产品添加到要映射的位置
map.put(id,list);//ArrayList<ProductBean>
通过从地图获取列表来更新相同ID的列表,然后重新插入相同ID的更新列表
如果您的asynctsk
列表很长,请在productbean
中进行所有操作
答案 1 :(得分:2)
您可以对流使用过滤操作,然后从原始数据中删除新收集的列表值。
public int CompareTo(object obj) => obj is CustomId cid ? this.CompareTo(cid) : -1;