如何在Java8中创建连接列表?
我有两个字符串列表,一个来自节点的右子树,另一个来自该节点的左子树。列表中的每个字符串实际上都是一个逗号分隔的整数列表
现在,我需要创建一个新列表,其中包含:
- 开始时rootv的值
- 后跟逗号
- 后跟从leftList中选取的字符串
- 后跟逗号
- 后跟从rightList中选取的字符串
因此,如果rightList有:
1,2,3,4,5
,以及1,4,5,2,3
而leftList有:
7,8,6,98,12
,以及7,98,12,8,6
节点处的值为10
,输出列表应为:
10,7,8,6,98,12,1,2,3,4,5
10,7,8,6,98,12,1,4,5,2,3
10,7,98,12,8,6,1,2,3,4,5
10,7,98,12,8,6,1,4,5,2,3
10,1,2,3,4,5,7,8,6,98,12
10,1,2,3,4,5,7,98,12,8,6
10,1,4,5,2,3,7,8,6,98,12
10,1,4,5,2,3,7,98,12,8,6
李>
对我来说,对每个使用传统的,对或而循环使用传统的并不困难。事实上,这里有一个实现:
public ArrayList<String> getList (Node n) {
//Prepare leftList and rightList...
if (leftList.size() == 0) return prepareSingleList(sb, v, rightList);
if (rightList.size() == 0) return prepareSingleList(sb, v, leftList);
//TODO: re-write this code to use Stream API
ArrayList<String> myList = new ArrayList<>();
StringBuilder sb = new StringBuilder();
//both lists are non-empty, so run two loops
for (String l: leftList) {
for(String r: rightList) {
sb.setLength(0);
appendValues(v, l, r, sb);
myList.add(sb.toString());
sb.setLength(0);
appendValues(v, r, l, sb);
myList.add(sb.toString());
}
}
return myList;
}
private void appendValues(int v, String s1, String s2, StringBuilder sb) {
sb.append(v);
sb.append(",");
sb.append(s1);
sb.append(",");
sb.append(s2);
}
问题:我试图理解Java-8中的streams API和lambda表达式。如何使用流API重新编写上述代码中//TODO:...
部分之后编写的代码
共 (0) 个答案