我覺得這個節目不想要的轉換:
// The input
String[][] a = {
{"a", "b", "c", "d"},
{"c", "d"},
{"b", "c"}
};
System.out.println("Input: "+ Arrays.deepToString(a));
// Convert the input to a Set of Sets (so that we can hangle it more easily
Set<Set<String>> input = new HashSet<Set<String>>();
for (String[] s : a) {
input.add(new HashSet<String>(Arrays.asList(s)));
}
// The map is used for counting how many times each element appears
Map<String, Integer> count = new HashMap<String, Integer>();
for (Set<String> s : input) {
for (String i : s) {
if (!count.containsKey(i)) {
count.put(i, 1);
} else {
count.put(i, count.get(i) + 1);
}
}
}
//Create the output structure
Set<String> output[] = new HashSet[a.length + 1];
for (int i = 1; i < output.length; i++) {
output[i] = new HashSet<String>();
}
// Fill the output structure according the map
for (String key : count.keySet()) {
output[count.get(key)].add(key);
}
// And print the output
for (int i = output.length - 1; i > 0; i--) {
System.out.println("Set_" + i + " = " + Arrays.toString(output[i].toArray()));
}
輸出:
Input: [[a, b, c, d], [c, d], [b, c]]
Set_3 = [c]
Set_2 = [d, b]
Set_1 = [a]
http://stackoverflow.com/questions/11697196/draw-venn-diagram-using-java – 2013-02-08 14:04:19
也許setb是'set_b = {「b」,「d」};'? – user000001 2013-02-08 14:23:02
@WernerVesterås我知道這個線程和wolfram alpha不太好,因爲我需要在線。 char4j也是一樣,維納圖也很可怕......我需要像圖片中的東西。 – reox 2013-02-08 15:48:49