未知循环层数的递归处理
最近遇到一个问题,当你不知道你需要进行几层循环来处理你的数据时,该怎么办。
例如,你要构建一个表格,但是你只得到一个已经填充好数据的list,却并不知道需要构建的表格是几行几列。
处理的主要逻辑就是,采用递归的方法,遍历list的下标。
闲话不多说,附上代码:
public class TestMultiRound {
public static String multiRound(List<List<String>> dataList, String temp, int index) {
if (index >= dataList.size()) {
return "";
}
StringBuffer out = new StringBuffer();
String tmp = "";
List<String> data = dataList.get(index);
for (int i = 0; i < data.size(); i++) {
tmp = data.get(i) + "/";
if (index < dataList.size()) {
out.append(multiRound(dataList, temp + tmp, index + 1));
}
if (index == dataList.size() - 1) {
out.append(temp).append(tmp).append("\n");
}
}
return out.toString();
}
public static void main(String[] args) {
List<List<String>> dataList = new ArrayList<List<String>>();
List<String> aaa = new ArrayList<String>();
aaa.add("111");
aaa.add("222");
aaa.add("333");
dataList.add(aaa);
aaa = new ArrayList<String>();
aaa.add("aaa");
aaa.add("bbb");
aaa.add("ccc");
aaa.add("ddd");
dataList.add(aaa);
aaa = new ArrayList<String>();
aaa.add("+++");
aaa.add("---");
aaa.add("...");
dataList.add(aaa);
System.out.println(multiRound(dataList, "", 0));
}
}
运行结果如下: