各位大神们,小弟目前有一个java集合重复数据去重然后重组算法,还是大神帮忙,期望结果如下:
数据格式:
String a = "a1,a2,a3";
String d = "b1,b2,b3";
String b = "a2,a1,a4";
List<String> list = new ArrayList<String>();
list.add(a);
list.add(b);
list.add(d);
期望结果:
String a = "a1,a2,a3,a4";
String d = "b1,b2,b3";
------解决思路----------------------
public class CustomArrayList extends ArrayList<String> {
/**
*
*/
private static final long serialVersionUID = -2753294701219092786L;
@Override
public boolean add(String e) {
boolean flag = false;
String val = null;
int index = 0 ;
for(int i=0 ;i < this.size();i++){
String context = this.get(i);
String [] currentArr = e.split(",");
for (int j = 0; j < currentArr.length; j++) {
val = "";
if(context.contains(currentArr[j]))
flag = true;
else
val = ","+currentArr[j];
}
if(flag){
val = context + val;
index = i;
break;
}
}
if(flag){
super.remove(index);
super.add(index , val);
return true;
}else{
return super.add(e);
}
}
public static void main(String[] args) {
String a = "a1,a2,a3";
String d = "b1,b2,b3";
String b = "a2,a1,a4";
CustomArrayList list = new CustomArrayList();
list.add(a);
list.add(b);
list.add(d);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
傻瓜方式,性能也不好,这样的设计不是很合理!