欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

如何使用Java 8流快速替换列表中的元素

发布时间:2023/12/3 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 如何使用Java 8流快速替换列表中的元素 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

假设您有一个项目清单:

List<String> books = Arrays.asList("The Holy Cow: The Bovine Testament","True Hip Hop","Truth and Existence","The Big Book of Green Design" );

(不要判断我。此随机书生成器中的书 )

现在,您想创建一个新列表,其中仅将第三项替换为一些新值:

List<String> books = Arrays.asList("The Holy Cow: The Bovine Testament","True Hip Hop","Pregnancy For Dummies", // New book at index 2"The Big Book of Green Design" );

当然,您可以去修改原始列表:

books.set(2, "Pregnancy For Dummies");

…或创建原始列表的副本,然后修改该副本:

List<String> copy = new ArrayList<>(books); copy.set(2, "Pregnancy For Dummies");

但是,如果您想编写单行代码以按功能样式执行相同的操作,则可以使用jOOλ编写以下内容

seq(books).zipWithIndex().map(t -> t.v2 == 2 ? "Pregnancy For Dummies": t.v1).toList();

使用JDK标准Streams API,事情会变得有些困难。 您可以这样写:

Stream.concat(Stream.concat(books.stream().limit(2),Stream.of("Pregnancy For Dummies")),books.stream.skip(3) ).collect(Collectors.toList());

不过,这有点不幸,因为流的第一部分需要遍历两次-一次是限制,一次是跳过( 另请参见我们有关SQL的OFFSET分页的警告 )

迅捷还是不?

显然,如上所述,JDK API不会帮助您编写简洁的功能逻辑,并且“命令式”样式更加简单明了。 我们之前已经写过有关此内容的文章 。 这也是我们创建jOOλ的主要动机。

如果您正在寻找功能更多的幸福,也请查看以下库:

  • Java语言
  • 功能性Java

翻译自: https://www.javacodegeeks.com/2015/04/how-to-use-java-8-streams-to-swiftly-replace-elements-in-a-list.html

总结

以上是生活随笔为你收集整理的如何使用Java 8流快速替换列表中的元素的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。