Java 拆分阵列列表<;ProductBean>;使用特定值

Java 拆分阵列列表<;ProductBean>;使用特定值,java,android,arraylist,Java,Android,Arraylist,使用特定值拆分ArrayList时面临的问题,如 ArrayList<ProductBean> al =new ArrayList<ProductBean>(); ArrayList具有相同或不同的shopId的多个产品数据这意味着 假设我有5个不同的产品,其中2个产品具有相同的shopId剩余的产品具有不同的shopId 现在我想用不同的shopId来分离ArrayList,如代码片段中所示,使用相同的shopId 25和剩余的21,23会产生3个不同的ArrayL

使用特定值拆分
ArrayList
时面临的问题,如

ArrayList<ProductBean> al =new ArrayList<ProductBean>(); 
ArrayList
具有相同或不同的
shopId的多个产品数据
这意味着 假设我有5个不同的产品,其中2个产品具有相同的
shopId
剩余的产品具有不同的shopId


现在我想用不同的
shopId
来分离
ArrayList
,如代码片段中所示,使用相同的shopId 25和剩余的21,23会产生3个不同的ArrayList

一种方法是使用
HashMap

HashMap<Integer, ArrayList<ProductBean>> map = new HashMap<>();
HashMap map=newhashmap();
然后将Id为的产品添加到map like

map.put(id,list);//ArrayList<ProductBean>
map.put(id,list)//ArrayList
通过从映射中获取列表来更新相同Id的列表,并重新插入相同Id的更新列表


如果您有一长串的
productbean

可以在
asynctsk
中执行所有这些操作,一种方法是使用
HashMap

HashMap<Integer, ArrayList<ProductBean>> map = new HashMap<>();
HashMap map=newhashmap();
然后将Id为的产品添加到map like

map.put(id,list);//ArrayList<ProductBean>
map.put(id,list)//ArrayList
通过从映射中获取列表来更新相同Id的列表,并重新插入相同Id的更新列表


asynctsk
中执行所有这些操作如果您有一长串
productbean

您可以对流使用筛选操作,然后从原始列表中删除新收集的列表值

final List<ProductBean> first = al.stream()
        .filter(p -> p.getShopId().equals(25))
        .collect(Collectors.toList());
al.removeAll(first);

//repeate for other values you wish to split
final List first=al.stream()
.filter(p->p.getShopId().equals(25))
.collect(Collectors.toList());
al.removeAll(第一);
//对要拆分的其他值重复此操作

您可以对流使用筛选操作,然后从原始列表中删除新收集的列表值

final List<ProductBean> first = al.stream()
        .filter(p -> p.getShopId().equals(25))
        .collect(Collectors.toList());
al.removeAll(first);

//repeate for other values you wish to split
final List first=al.stream()
.filter(p->p.getShopId().equals(25))
.collect(Collectors.toList());
al.removeAll(第一);
//对要拆分的其他值重复此操作

answer but.stream()的thnks需要API级别24 my minAPI级别为21,因此它可能无法处理低于answer but.stream()的24个APIthnks需要API级别24我的minAPI级别是21,因此它可能无法在低于24的API上工作。谢谢回复伙伴。请详细说明您在此处尝试的内容。您必须以
shopId
为键创建hashmap。每个键都将使用相同的
shopId
保存
ProductBean
的数组列表。创建地图时,您会在地图中查找shopId密钥匹配项,如果发现您已将保存的列表映射到密钥,则通过向列表中添加新的
ProductBean
来更新列表,并根据
shopId密钥重新将其插入到映射中,这与prashant17所说的内容无关,您可以使用一个常用的方法添加产品,该方法将产品添加到地图中所需的列表中;使用一个带有店铺Id的get方法,该方法将返回所需的列表。感谢您的回复,mate。您是否可以详细说明您在此处尝试的内容?您必须使用
shopId
作为键创建hashmap。每个键都将使用相同的
shopId
保存
ProductBean
的数组列表。创建地图时,您会在地图中查找shopId密钥匹配项,如果发现您已将保存的列表映射到密钥,则通过向列表中添加新的
ProductBean
来更新列表,并根据
shopId密钥重新将其插入到映射中,这与prashant17所说的内容无关,您可以有一个添加产品的常用方法,该方法将产品添加到地图中的所需列表中,还有一个带有shop Id的get方法,该方法将返回所需列表。