本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
最近遇到一个问题,当你不知道你需要进行几层循环来处理你的数据时,该怎么办?例如,你要构建一个表格,但是你只得到一个已经填充好数据的list,却并不知道需要构建的表格是几行几列。
这种场景还是比较常见的,本文纯粹是抛砖引玉,给大家提供下思路,欢迎留言大家讨论~
解决方案
处理的主要逻辑就是,采用递归的方法,遍历list的下标。
闲话不多说,附上代码:
public class TestMultiRound {
/**
* 多重列表循环处理
*
* @param dataList 数据源
* @param temp 临时参数,用来拼接数据
* @param index 列表下标
* @return Feed配置列表
*/
public static String multiRound(List<List<String>> dataList, String temp, int index) {
// 第一层List已遍历结束
if (index >= dataList.size()) {
return "";
}
// 最终结果
StringBuilder out = new StringBuilder();
String tmp = "";
// 根据index下标,获取对应的第二层List的元素
List<String> data = dataList.get(index);
// 遍历第二次List的元素
for (int i = 0; i < data.size(); i++) {
tmp = data.get(i) + "/";
// 通过递归的方式,循环遍历其它第二层List的同层元素
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));
}
}
运行结果如下:
后言
既然看到这里了,感觉有所收获的朋友,不妨来个大大的点赞吧~~~