有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在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) 个答案