使用特定值拆分ArrayList <productbean>

时间:2018-07-27 13:31:17

标签: java android arraylist

使用特定值分割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

2 个答案:

答案 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;