Java 根据列表中的值将ArrayList拆分为multipleList

Java 根据列表中的值将ArrayList拆分为multipleList,java,arraylist,Java,Arraylist,我有一个MyObject的arraylist,我想在其中根据对象的标题值拆分列表 List<MyProduct> productList = instance.getMyProductList(); 我想将我的arraylist拆分为几个具有类似产品名称的列表 请让我知道。 谢谢。番石榴: ListMultimap<String, MyProduct> result = Multimaps.index(productList, new Function<Strin

我有一个MyObject的arraylist,我想在其中根据对象的标题值拆分列表

List<MyProduct> productList = instance.getMyProductList();
我想将我的arraylist拆分为几个具有类似产品名称的列表

请让我知道。 谢谢。

番石榴:

ListMultimap<String, MyProduct> result = Multimaps.index(productList, new Function<String, Product>() {
    @Override
    public String apply(Product input) {
        return input.getTitle();
    }
});
ListMultimap result=Multimaps.index(productList,新函数(){
@凌驾
公共字符串应用(产品输入){
返回input.getTitle();
}
});
对于普通的旧Java集合:

Map<String, List<MyProduct>> result = new HashMap<>();
for (MyProduct p : productList) {
    List<MyProduct> list = result.get(p.getTitle());
    if (list == null) {
        list = new ArrayList<>();
        result.put(p.getTitle(), list);
    }
    list.add(p);
}
Map result=newhashmap();
对于(MyProduct p:productList){
List=result.get(p.getTitle());
if(list==null){
列表=新的ArrayList();
put(p.getTitle(),list);
}
增加(p);
}

两者都假设“相似”标题实际上是“相等”标题。

您已经尝试过什么?我尝试过将当前值与以前的值进行比较,但它看起来很复杂,因为列表来自服务器,可能会发生更改。您如何定义“相似产品标题”?只需向我们展示您已经拥有的内容product=productList.get(I);if(productList.size()!=1){if(product.getProductTitle()==prevProductTitle){categoryList.add(product);}或者{newCategoryList=new ArrayList();newCategoryList.add(product);}假设我有5个不同的标题,那么,我如何才能访问5个不同的列表呢?你至少看过这个列表了吗<代码>列出产品swithtitlefoo=result.get(“foo”)<代码>集合allListsOfProducts=result.values()
Map<String, List<MyProduct>> result = new HashMap<>();
for (MyProduct p : productList) {
    List<MyProduct> list = result.get(p.getTitle());
    if (list == null) {
        list = new ArrayList<>();
        result.put(p.getTitle(), list);
    }
    list.add(p);
}