首页 > 解决方案 > 使用流如何替换嵌套列表的值

问题描述

在索引位置 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]]

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

标签: javajava-stream

解决方案


我不会使用 aStream来执行此操作,处理子列表会更简单:

arr.subList(0, arr.size() / 2).forEach(s -> s.set(1, "-"));

如果您确实需要使用流(例如,如果您想进行额外的过滤和映射操作),您可以使用 anIntStream来处理索引:

IntStream.range(0, arr.size() / 2)
        .forEach(j -> arr.get(j).set(1, "-"));

或者只是通过限制您处理的条目数量:

arr.stream()
        .limit(arr.size() / 2)
        .forEach(s -> s.set(1, "-"));

推荐阅读