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

java替换数组中的元素

假设您有一个项目清单:

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替换数组中的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:良好的编程习惯与编程要点

点击蓝字关注我们以良好的方式编写C class假设现在我们要实现一个复数类complex&#xff0c;在类的实现过程中探索良好的编程习惯。① Header(头文件)中的防卫式声明complex.h: # ifndef __COMPLEX__ # define __COMPLEX__ class complex {} # endif防止头文件的内容被多次包含…

如何使用man命令linux,Linux man命令的使用方法

Linux提供了丰富的帮助手册&#xff0c;当你需要查看某个命令的参数时不必到处上网查找&#xff0c;只要man一下即可。可以使用man man 查看man的使用方法1.man共有以下几个章节代码功能1标准用户命令(Executable programs or shell commands)2系统调用(System calls)functions…

linux adb 端口,linux 无法连接adb 设备

之前电脑linux 连接 adb 设备一直都是正常的&#xff0c;今天突然出现无法连接的情况adb shell出现下面的错误信息error: insufficient permissions for deviceadb device出现下面的信息List of devices attached????????????no permissions解决方法lsusb 查看adb…

php 系统交互 删除文件_FileSystemMap:与文件系统交互的自然方法

php 系统交互 删除文件作为项目的一部分&#xff0c;我目前正在研究创建FileSystemMap 。 我已经开始了一个非常小的GitHub的项目在这里举办的代码。 本质上&#xff0c;此映射实现将允许用户与其文件系统上的目录进行交互&#xff0c;就好像它是java.util.Map 。 映射中的每个…

又要卷?挑战 C 语言,新的系统编程语言 Hare 发布

点击蓝字关注我们开发者 Drew DeVault 公布了一门新的系统编程语言 Hare &#xff08;野兔&#xff09;。Hare 的开发时间接近两年半&#xff0c;它使用静态类型系统、手动内存管理和最小运行时&#xff0c;非常适合编写操作系统、系统工具、编译器以及其他低级高性能任务。据 …

java cuba_CUBA平台–新的Java企业应用程序框架

java cuba所以..你好&#xff0c;世界&#xff01; 我们的英语网站终于可以正常使用了&#xff0c;现在每个人都可以下载该平台&#xff0c;并可以以前所未有的速度更快地创建业务应用程序。 在我们决定与国际Java社区共享足够好之前&#xff0c;我们花了六年的永久发展和偶尔的…

linux设备驱动开发详解源码,linux设备驱动开发详解光盘源码.rar

压缩包 : linux设备驱动开发详解光盘源码.rar 列表19/busybox源代码/busybox-1.2.1.tar.bz219/MTD工具/mtd-utils-1.0.0.tar.gz19/nand驱动范例/s3c2410.c19/nor驱动范例/s3c2410nor.c19/yaffs&yaffs2源代码/yaffs.tar.gz19/yaffs&yaffs2源代码/yaffs2.tar.gz20/USB串口…

进程、线程、协程三个概念傻傻分不清

点击蓝字关注我们进程&#xff0c;是并发执行的程序在执行过程中分配和管理资源的基本单位&#xff0c;每一个进程都有一个自己的地址空间&#xff0c;即进程空间或&#xff08;虚空间&#xff09;。进程空间的大小 只与处理机的位数有关&#xff0c;一个 16 位长处理机的进程空…

随机数发生器怎么用_用随机数发生器射击自己的脚

随机数发生器怎么用这将不是解释随机数生成器毕竟不是那么随机的文章之一。 因此&#xff0c;您中的那些人希望获得有关如何破解老虎机&#xff0c;继续前进的指南&#xff0c;在这里什么也看不到。 相反&#xff0c;它是有关一个不太常见的锁争用问题的帖子&#xff0c;该问题…

linux 4.14.2编译,vmware中linux内核2.6.14.4编译全过程_linux教程

很久就开始尝试编译Linux内核&#xff0c;但是总是遇到不少的问题&#xff0c;经过几十次的编译&#xff0c;直到现在才解决&#xff0c;人都要崩溃了。所以干脆把这个过程写出来&#xff0c;希望在你遇到同样问题的时候少走点弯路。我用的是Red Hat Linux 9. 内核版本是2.6.14…

C++ STL deque 容器底层实现原理(深度剖析)

点击蓝字关注我们什么是多态&#xff0c;多态有什么用途&#xff1f;定义&#xff1a;“一个接口&#xff0c;多种方法”&#xff0c;程序在运行时才决定调用的函数。实现&#xff1a;C多态性主要是通过虚函数实现的&#xff0c;虚函数允许子类重写override(注意和overload的区…

lambda ::_Lambdas中的例外:有点混乱的优雅解决方案

lambda ::考虑以下用于写入文件的功能&#xff1a; 该方法背后的想法是&#xff0c;以允许用户在不同的实施方式中通过InputStream的方法&#xff0c;以便writeToFile可以被称为例如用GZIPOuputStream &#xff0c; SnappyOuputStream &#xff08;快速压缩&#xff09;或简单…

​常问的16个C语言问题,你能答上来几个?

点击蓝字关注我们最近不少小伙伴在找工作&#xff0c;这里我给大家分享一下面试中经常会遇到的一些嵌入式C语言问题&#xff0c;你看看能答上来几个呢&#xff1f;1用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09;#de…

centos linux 内核升级,Centos系统的升级及Linux 内核升级

系统及内核版本&#xff1a;[rootnode5 ~]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)[rootnode5 ~]# uname -aLinux node6 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux更新仓库&#xff1a;[rootnode5 yu…

spring javaee_JavaEE还是Spring? 都不行! 我们呼吁新的竞争者!

spring javaee如果您一直在Twitter上关注一些Java的重要人物&#xff0c;或者在Reddit上阅读了“新闻”&#xff0c;那么您一定不会错过Spring和JavaEE宣传人员之间热闹的“贱人之战”&#xff08;请原谅我的法语&#xff09;。 首先&#xff0c;于尔根霍勒&#xff08;JrgenH…

C语言代码优化的方法

点击蓝字关注我们在本篇文章中&#xff0c;我(指原作者)收集了很多经验和方法。应用这些经验和方法&#xff0c;可以帮助我们从执行速度和内存使用等方面来优化C语言代码。简介在最近的一个项目中&#xff0c;我们需要开发一个运行在移动设备上但不保证图像高质量的轻量级JPEG库…

linux源码安装apache2,CentOS7编译安装Apache2

在LAMP环境下对于服务的安装是必不可少的&#xff0c;在linux环境下安装软件也有两种不同的方式&#xff0c;一种是yum安装当然了不同的linux发行版本使用略有不同&#xff0c;另一种是通过编译安装&#xff0c;编译安装要比yum安装要可控此&#xff0c;但是要比yum安装略微麻烦…

finally块_如何从finally块访问方法的结果值

finally块尽管JVM是基于堆栈的计算机 &#xff0c;但Java语言实际上并没有为您提供任何访问该堆栈的方法。 即使有时在极少数情况下&#xff0c;它也将非常有用。 一个例子 方法结果值放在堆栈中。 如果查看以下示例&#xff1a; public int method() {if (something)return …

C/C++ 命中率比较高的面试知识点,你都答得上来吗

点击蓝字关注我们第一部分&#xff1a;计算机基础1. C/C内存有哪几种类型&#xff1f;C中&#xff0c;内存分为5个区&#xff1a;堆(malloc)、栈(如局部变量、函数参数)、程序代码区&#xff08;存放二进制代码&#xff09;、全局/静态存储区&#xff08;全局变量、static变量&…

linux 提示符 异常,linux终端提示符异常 bash-4.1$

/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile: 每个用户都可使用该文件…