为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2021-10-13 16:10:23
在索引位置 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]]但是任何人都可以解释如何使用流来实现相同的目标
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

我不会使用 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, "-"));


查看完整回答
反对 回复 2021-10-13
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这个问题很模糊。最好也提供输出格式,以便有人了解您的需求并帮助您。但是,基于一些假设和启发式方法,我猜这就是您所需要的。如果您想要不同的格式,请让我知道或相应地更改此答案。


这里的另一点是您到目前为止所尝试的内容尚不清楚。您必须预先尝试并在发布问题时提及您所做的事情。


List<List<String>> formattedStrings = source.stream()

    .map(sl -> IntStream.range(0, sl.size())

        .mapToObj(i -> i == 1 ? sl.get(i).charAt(0) + "-" + sl.get(i).charAt(1) : sl.get(i))

            .collect(Collectors.toList()))

    .collect(Collectors.toList());


查看完整回答
反对 回复 2021-10-13
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信