我有一个arraylist说“templist”它会有项目项目说“凳子”
现在列表包含重复项
1 abc wwww.com lob1
1 abc wwww.com lob2
现在我想要
1 abc wwww.com(lob1,lob2)
可能只是一个单独的高潮列表。我们该怎么做?请帮忙
List tempList = new ArrayList();
我添加了ServiceItem
类型的项目(其中包含id
,name
,url
,lob
)等属性。
如上所述,我将重复id
,name
,url
,因为这三个可以映射到不同的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;
}
答案 0 :(得分:2)
从列表中创建一个集合将删除副本,例如:
Set set = new HashSet(templist)
答案 1 :(得分:1)
我会做以下事情:
equals
和hashCode
方法(以确保不会插入重复项)。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));
}
}
}``