举个例子 [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"]
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]
给你个看看吧,不懂再讨论吧。