有一个字符串列表的列表,现在需要遍历这个双层列表,遍历每个内层列表并取其中的一个下标,然后组成一个内层下标列表,最终期望得到所有这样内层下标列表的可能性列表 比如: 字符串列表的列表 List<List<String>> strListList = List.of( List.of("A1", "A2", "A3", "A4"), List.of("B1", "B2", "B3", "B4", "B5", "B6"), List.of("C1", "C2", "C3", "C4", "C5"), List.of("D1", "D2") ); // 为了简化代码,数据不需要null判断和空判断 期望返回: [ [0,0,0,0], // 第一行的0号下标,第二行的0号下标,第三行的0号下标,第四行的0号下标 [0,0,0,1], // 第一行的0号下标,第二行的0号下标,第三行的0号下标,第四行的1号下标 ... [3,5,4,0], // 第一行的3号下标,第二行的5号下标,第三行的4号下标,第四行的0号下标 [3,5,4,1] // 第一行的3号下标,第二行的5号下标,第三行的4号下标,第四行的1号下标 ]
时间: 2023-07-19 09:17:28 浏览: 80
java代码-使用集合ArrayList对字符串进行存储和管理 任务: 1.定义ArrayList对象 2.存储学科名称,见运行效果图 3.输出集合中元素的个数 4.遍历输出集合中的所有元素
可以使用递归的方式来实现,具体步骤如下:
1. 定义一个递归函数,函数参数包括当前正在处理的内层列表的下标、上一个内层列表已经取到的下标列表、所有可能性列表
2. 在函数内部,遍历当前内层列表的所有下标,对于每个下标,生成一个新的下标列表,包括上一个内层列表已经取到的下标列表和当前下标
3. 如果当前内层列表不是最后一个内层列表,则继续递归处理下一个内层列表
4. 如果当前内层列表是最后一个内层列表,则将新的下标列表加入所有可能性列表中
代码实现如下:
```java
public List<List<Integer>> getAllIndex(List<List<String>> strListList) {
List<List<Integer>> result = new ArrayList<>();
getAllIndex(strListList, 0, new ArrayList<>(), result);
return result;
}
private void getAllIndex(List<List<String>> strListList, int level, List<Integer> preIndexList, List<List<Integer>> result) {
List<String> curList = strListList.get(level);
for (int i = 0; i < curList.size(); i++) {
List<Integer> curIndexList = new ArrayList<>(preIndexList);
curIndexList.add(i);
if (level == strListList.size() - 1) {
result.add(curIndexList);
} else {
getAllIndex(strListList, level + 1, curIndexList, result);
}
}
}
```
其中,strListList表示字符串列表的列表,level表示当前正在处理的内层列表的下标,preIndexList表示上一个内层列表已经取到的下标列表,result表示所有可能性列表。在函数最开始调用时,level应该为0,preIndexList应该为空列表。函数返回所有可能性列表。
阅读全文