字符串元素数组求并集

举个例子 [code="java"]

List a =new ArrayList();
a.add("abc");
a.add("a");
a.add("cb");
a.add("f");
a.add("ab");
[/code]
求,a列表中元素的并集。。(说明:不考虑元素的顺序位置)
正确的结果应该为{abc,f}.
请大家帮忙! :x

[code="java"]class Test5Main {
private static List getList(List lia) {
List lis = new ArrayList();
List tem = new ArrayList();
lis.add(lia.get(0));
tem.add(lia.get(0));
for (String str : lia.subList(1, lia.size())) {
setValue(lis, tem, str);
}
return lis;
}
private static void setValue(List lis, List tem, String str) {
boolean isInsert = true;
for (String s1 : lis) {
int re = getState(s1, str);
if (re == 1) {
tem.remove(s1);
}
if (re == -1) {
isInsert = false;
break;
}
}
if (isInsert) {
tem.add(str);
}
lis.clear();
lis.addAll(tem);
}
private static int getState(String s1, String s2) {
// s2包含于s1
if (isContain(s1, s2)) {
return -1;
}
// s2包含s1
else if (isContain(s2, s1)) {
return 1;
}
return 0;
}
private static boolean isContain(String s1, String s2) {
for (int i = 0; i < s2.length(); i++) {
if (s1.indexOf(s2.charAt(i)) == -1)
return false;
}
return true;
}
public static void main(String[] args) {
List a =new ArrayList();
a.add("abc");
a.add("a");
a.add("cb");
a.add("f");
a.add("ab");
for (String string : getList(a)) {
System.out.println(string);
}
}

}[/code]
给你个看看吧,不懂再讨论吧。

一时间想不出好的办法 不过不闲麻烦倒是可以做到

List a =new ArrayList();

a.add("abc");

a.add("a");

a.add("cb");

a.add("f");

a.add("ab");
//定义map 想使用map的key来处理重复的情况
Map map=new HashMap();
for(String i:a){//循环a集合
//元素分割成char

char[] charArray = i.toCharArray();
for(char j:charArray){
map.put(j,j);//key不重复 所以这样之后 map的可以就是交集了
}
}

性能不咋的应该.循环比较多 没想到别的办法之前可以一试

[code="java"]
public Character[] getResult(List sList) {
Set chars = new HashSet();
for (String str : sList) {
char[] charArr = str.toCharArray();
for (char c : charArr) {
chars.add(c);
}
}

    Character[] result = chars.toArray(new Character[chars.size()]);
    Arrays.sort(result);
    return result;
}

[/code]

你这个例子太模糊了,如果是这样的输出什么?[code="java"]List a =new ArrayList();
a.add("abc");
a.add("ae");
a.add("cd");
[/code]