使用流如何替换嵌套列表的值

在索引位置 1 的输入中遇到的前半部分字符串将使用流替换为字符“-”我们如何执行操作?


List<List<String>> arr = Arrays.asList(Arrays.asList("0", "ab"), Arrays.asList("6", "cd"),

    Arrays.asList("0", "ef"), Arrays.asList("6", "gh"),

    Arrays.asList("4", "ij"), Arrays.asList("0", "ab"),

    Arrays.asList("6", "cd"));

我有上面的列表,我想用“-”替换每个嵌套列表值的第一个位置,使用我已经完成的循环


    int j=0;

    while(j <arr.size()/2){

        arr.get(j).set(1, "-");

        j++;


        }

样本输出:[[0, -], [6, -], [0, -], [6, gh], [4, ij], [0, ab], [6, cd]]


但是任何人都可以解释如何使用流来实现相同的目标


慕容森
浏览 160回答 2
2回答

ABOUTYOU

我不会使用 aStream来执行此操作,处理子列表会更简单:arr.subList(0, arr.size() / 2).forEach(s -> s.set(1, "-"));如果您确实需要使用流(例如,如果您想进行额外的过滤和映射操作),您可以使用 anIntStream来处理索引:IntStream.range(0, arr.size() / 2)&nbsp; &nbsp; &nbsp; &nbsp; .forEach(j -> arr.get(j).set(1, "-"));或者简单地限制您处理的条目数量:arr.stream()&nbsp; &nbsp; &nbsp; &nbsp; .limit(arr.size() / 2)&nbsp; &nbsp; &nbsp; &nbsp; .forEach(s -> s.set(1, "-"));

阿波罗的战车

这个问题很模糊。最好也提供输出格式,以便有人了解您的需求并帮助您。但是,基于一些假设和启发式方法,我猜这就是您所需要的。如果您想要不同的格式,请让我知道或相应地更改此答案。这里的另一点是您到目前为止所尝试的内容尚不清楚。您必须预先尝试并在发布问题时提及您所做的事情。List<List<String>> formattedStrings = source.stream()&nbsp; &nbsp; .map(sl -> IntStream.range(0, sl.size())&nbsp; &nbsp; &nbsp; &nbsp; .mapToObj(i -> i == 1 ? sl.get(i).charAt(0) + "-" + sl.get(i).charAt(1) : sl.get(i))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList()))&nbsp; &nbsp; .collect(Collectors.toList());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java