从Arraylist中删除Duplicate并获取列表中一个属性的副本

时间:2010-10-14 09:47:36

标签: java arraylist

我有一个arraylist说“templist”它会有项目项目说“凳子”

现在列表包含重复项

  

1 abc wwww.com lob1
  1 abc wwww.com lob2

现在我想要

  

1 abc wwww.com(lob1,lob2)

可能只是一个单独的高潮列表。我们该怎么做?请帮忙

List tempList = new ArrayList();

我添加了ServiceItem类型的项目(其中包含idnameurllob)等属性。
如上所述,我将重复idnameurl,因为这三个可以映射到不同的lobs

我希望前三个属性为一个条目,最后一个属性应为不同lobs的列表。

我对代码进行了更改。现在。这是代码。告诉我如何实现1 |的结果ABC,BCA

公共类ListTest {

public static void main(String args[]){

    List TestList = new ArrayList();

    MyBean myBean = new MyBean();
    MyBean myBean2 = new MyBean();
    myBean.setId("1");
    myBean.setLob("ABC");
    myBean2.setId("1");
    myBean2.setLob("BCA");

    TestList.add(myBean);
    TestList.add(myBean2);

}   

}

公共类MyBean {

    private String id;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getLob() {
        return lob;
    }
    public void setLob(String lob) {
        this.lob = lob;
    }
    private String lob;

}

3 个答案:

答案 0 :(得分:2)

从列表中创建一个集合将删除副本,例如:

Set set = new HashSet(templist)

答案 1 :(得分:1)

我会做以下事情:

  1. 使用地图而不是使用列表。
  2. 从ServiceItem中删除lob。
  3. 覆盖ServiceItem的equalshashCode方法(以确保不会插入重复项)。
  4. 将新条目插入到map中,其中key是此ServiceItem,value是一个列表(如果lobs是唯一的,则更好地设置)。检查contains(ServiceItem) - 然后将新的lob添加到值的列表(set)中。

答案 2 :(得分:0)

最后,我使用apache集合multihashmap解决了这个问题。但从3.2开始,它已被弃用,因此我使用了3.1版本。

这是最终的代码。

public class ListTest {

public static void main(String args[]){

    List<MyBean> TestList = new ArrayList<MyBean>();

    MyBean myBean = new MyBean();
    MyBean myBean2 = new MyBean();
    myBean.setId("1");
    myBean.setLob("ABC");
    myBean2.setId("1");
    myBean2.setLob("BCA");

    TestList.add(myBean);
    TestList.add(myBean2);

    for(int i=0;i<TestList.size();i++){
        MyBean result = (MyBean)TestList.get(i);
        System.out.println("ID:"+result.getId());
        System.out.println("Lob:"+result.getLob());
    }

     MultiMap mhm = new MultiHashMap();
     for(int i=0;i<TestList.size();i++){
         MyBean result = (MyBean)TestList.get(i);
         mhm.put(result.getId(), result.getLob());
     }

     List list = (List) mhm.get("1");

     for(int i=0;i<list.size();i++){
         System.out.println(list.get(i));
     }

}   

}``