展开全部
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
public class MyCode {
static TreeSet ts = new TreeSet<>();
static StringBuffer stb = new StringBuffer();
public static void main(String args[]) {
32313133353236313431303231363533e58685e5aeb931333431366430List a = new ArrayList<>();
a.add(1);
a.add(2);
a.add(3);
List b = new ArrayList<>();
b.add(2);
b.add(3);
b.add(4);
b.add(5);
List c = new ArrayList<>();
c.add(5);
c.add(6);
List d = new ArrayList<>();
d.add(5);
List e = new ArrayList<>();
e.add(7);
String arr[];
List names = (Arrays.asList("a,b,c,d,e".split(",")));
ArrayList> list = new ArrayList<>();
list.add(a);
list.add(b);
list.add(c);
list.add(d);
list.add(e);
for (int i = 0; i < list.size(); i++) {
List temA = new ArrayList<>(list.get(i));
for (int j = i + 1; j < list.size(); j++) {
List temB = new ArrayList<>(list.get(j));
temA.retainAll(temB);
if (temA.size() <= 0) {
List temC = new ArrayList<>(list.get(i));
List temD = new ArrayList<>(list.get(j));
temC.addAll(temD);
stb.append(names.get(i) + "," + names.get(j) + ",");
getNameIndex(temC, list, i, j, names);
arr = stb.toString().split(",");
Arrays.sort(arr);
ts.add(Arrays.toString(arr));
stb.delete(0, stb.length());
}
}
}
for (Iterator it = ts.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
private static void getNameIndex(List listTem, List> listB, int x, int y,
List names) {
for (int i = 0; i < listB.size(); i++) {
if (i == x || i == y) {
continue;
}
List listN = new ArrayList<>(listTem);
List listM = new ArrayList<>(listB.get(i));
listN.retainAll(listM);
if (listN.size() <= 0) {
stb.append(names.get(i));
break;
}
}
}
}
你这个,麻雀虽小,五脏俱全呢,看似一个简单的小玩意,挺费劲的!
主要用的是交集,并集,难点就是因为嵌套,有点饶头..你自己琢磨一下吧!