在给定的Integer列表中,我想跳过第n个索引中的一个元素.

输入:

{ 1, 2, 3, 4, 5 }

跳过第三个元素后的预期输出:

{ 1, 2, 4, 5 }

我可以看到,即使在并行运行时,STREAM也会一致地返回最后3个元素,尽管它们的顺序不同.那么,STREAM可以知道每一个的索引,还是这是随机巧合?

Stream.of(1,2,3,4,5)
    .parallel()
    .skip(2)
    .forEach(System.out::println);

所以我的问题是,有可能只跳过包含Java流的列表中的一个元素吗?

推荐答案

流不是数据 struct ,也不保存数据.它表示数据将流经的管道以及对数据进行操作的函数.尤其是,您不能指向流中存在特定元素的位置.您可以做的是遍历索引,筛选出不需要的索引并映射到列表元素:

int n = 3;
List<Integer> myList = List.of(1, 2, 3, 4, 5);
IntStream.range(0, myList.size())
         .filter(i -> i !=n)
         .map(myList::get)
         .forEach(System.out::println);

或者仅包含您在进行流传输时需要的源元素:

Stream.concat(myList.subList(0, n).stream(), myList.subList(n+1, myList.size()).stream())
          .forEach(System.out::println);

Java相关问答推荐

如何让TaskView总是添加特定的列来进行排序?

确定Java中Math.Ranb()输出的上限

如何获得执行人?

Java LocalTime.parse在本地PC上的Spring Boot中工作,但在Docker容器中不工作

返回响应时,CamelCase命名约定不起作用

第二次按下按钮后,我需要将按钮恢复到其原始状态,以便它可以再次工作

在学习Spring时,通过构造函数参数0表达了不满意的依赖关系

JNI:将代码打包成自包含的二进制文件

如何在透视表中添加对计数列的筛选?

将stringBuilder + forloop转换为stream + map

每次我需要时创建和关闭数据库连接会有什么效果吗?

如何使用jooq更新记录?

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

为什么Instant没有从UTC转换为PostgreSQL的时区?

JOOQ:批处理CRUD操作使用动态表定义,如何?

URI构造函数错误?

SonarQube在合并升级到java17后对旧代码提出错误

从 Java 17 切换回 Java 8 后出现的问题

声纳覆盖范围为 0%,未生成 jacoco.xml

元音变音字符:如何在 Java 中将Á<0x9c>转换为Ü?