遇到的有关笛卡尔积的问题记录
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class SplitTools {
private static ArrayList descartes(ArrayList<ArrayList> dimValues) {
ArrayList result = new ArrayList();
for (int i = 0; i < dimValues.size(); i++) {
ArrayList<String> curList = dimValues.get(i);
if (0 == i) {
for (String tempStr : curList) {
result.add(tempStr);
}
continue;
}
selfCopy(result, curList);
}
return result;
}
private static void selfCopy(ArrayList<String> result, ArrayList<String> curList) {
ArrayList<String> tempList = new ArrayList();
for (String strOfCurList : curList) {
for (String strOfResult : result) {
tempList.add(strOfResult + strOfCurList);
}
}
result.clear();
for (String tempStr : tempList) {
result.add(tempStr);
}
}
public static void main(String[] args) throws Exception {
int count = 0;
List<String> ls = org.apache.commons.io.FileUtils.readLines(new File("C:\\idea\\temp.txt"));
System.out.println("写入成功");
if (ls.size() == 0) {
System.out.println("文本为空");
} else {
for (int j = 0; j < ls.size(); j++) {
String str = ls.get(j);
String[] split = str.trim().split(",");
ArrayList a1 = new ArrayList();
for (int i = 0; i < split[0].length(); i++) {
a1.add(String.valueOf(split[0].charAt(i)));
}
ArrayList a2 = new ArrayList();
for (int i = 0; i < split[1].length(); i++) {
a2.add(String.valueOf(split[1].charAt(i)));
}
ArrayList a3 = new ArrayList();
for (int i = 0; i < split[2].length(); i++) {
a3.add(String.valueOf(split[2].charAt(i)));
}
ArrayList a4 = new ArrayList();
for (int i = 0; i < split[3].length(); i++) {
a4.add(String.valueOf(split[3].charAt(i)));
}
ArrayList a5 = new ArrayList();
for (int i = 0; i < split[4].length(); i++) {
a5.add(String.valueOf(split[4].charAt(i)));
}
ArrayList a6 = new ArrayList();
for (int i = 0; i < split[5].length(); i++) {
a6.add(String.valueOf(split[5].charAt(i)));
}
ArrayList a7 = new ArrayList();
for (int i = 0; i < split[6].length(); i++) {
a7.add(String.valueOf(split[6].charAt(i)));
}
ArrayList a8 = new ArrayList();
for (int i = 0; i < split[7].length(); i++) {
a8.add(String.valueOf(split[7].charAt(i)));
}
ArrayList a9 = new ArrayList();
for (int i = 0; i < split[8].length(); i++) {
a9.add(String.valueOf(split[8].charAt(i)));
}
ArrayList a10 = new ArrayList();
for (int i = 0; i < split[9].length(); i++) {
a10.add(String.valueOf(split[9].charAt(i)));
}
ArrayList a11 = new ArrayList();
for (int i = 0; i < split[10].length(); i++) {
a11.add(String.valueOf(split[10].charAt(i)));
}
ArrayList a12 = new ArrayList();
for (int i = 0; i < split[11].length(); i++) {
a12.add(String.valueOf(split[11].charAt(i)));
}
ArrayList a13 = new ArrayList();
for (int i = 0; i < split[12].length(); i++) {
a13.add(String.valueOf(split[12].charAt(i)));
}
ArrayList a14 = new ArrayList();
for (int i = 0; i < split[13].length(); i++) {
a14.add(String.valueOf(split[13].charAt(i)));
}
ArrayList<ArrayList> dimValue = new ArrayList();
dimValue.add(a1);
dimValue.add(a2);
dimValue.add(a3);
dimValue.add(a4);
dimValue.add(a5);
dimValue.add(a6);
dimValue.add(a7);
dimValue.add(a8);
dimValue.add(a9);
dimValue.add(a10);
dimValue.add(a11);
dimValue.add(a12);
dimValue.add(a13);
dimValue.add(a14);
ArrayList<String> result = descartes(dimValue);
for (String temp : result) {
org.apache.commons.io.FileUtils.writeStringToFile(new File("C:\\idea\\Split.txt"), temp + "\n", true);
count++;
}
}
System.out.println(count);
}
}
}