当前位置: 首页 > news >正文

集合元素处理(传统方式和Stream方式)

1、集合元素处理(传统方式)

  • 现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行一下若干操作步骤:
  1. 第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。
  2. 第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。
  3. 第二个队伍只要姓 的成员姓名;存储到一个新集合中。
  4. 第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。
  5. 将两个队伍 合并 为一个队伍;存储到一个新集合中。
  6. 根据姓名创建Person对象;存储到一个新集合中。
  7. 打印整个队伍的Person对象信息。
package com.csdn.streampractice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.Collections;
public class Traditional {public static void main(String[] args) {//第一支队伍ArrayList<String> one = new ArrayList<>();Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");//1.第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。ArrayList<String> one1 = new ArrayList<>();for (String name : one) {if (name.length()==3) {one1.add(name);}}//2.第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。ArrayList<String> one2 = new ArrayList<>();for (int i = 0; i < 3; i++) {one2.add(one1.get(i));}//第二支队伍ArrayList<String> two = new ArrayList<>();Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");//3.第二个队伍只要姓 张 的成员姓名;存储到一个新集合中。ArrayList<String> two1 = new ArrayList<>();for (String name : two) {if (name.startsWith("张")) {two1.add(name);}}//4.第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。ArrayList<String> two2 = new ArrayList<>();for (int i = 2; i <two1.size() ; i++) {two2.add(two1.get(i));}//5.将两个队伍 合并 为一个队伍;存储到一个新集合中。ArrayList<String> concatenate = new ArrayList<>();concatenate.addAll(one2);concatenate.addAll(two2);//6.根据姓名创建Person对象;存储到一个新集合中。ArrayList<Person> list = new ArrayList<>();for (String name : concatenate) {list.add(new Person(name));}//7.打印整个队伍的Person对象信息。for (Person person : list) {System.out.println(person);}//        Person(name=喜羊羊)
//        Person(name=美羊羊)
//        Person(name=懒洋洋)
//        Person(name=张无忌)}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {private String name;
}

2、集合元素处理(Stream方式) 

package com.csdn.streampractice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class DemoStreamNames {public static void main(String[] args) {//第一支队伍ArrayList<String> one = new ArrayList<>();Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");//1.第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。Stream<String> stream = one.stream();Stream<String> stringStream = stream.filter(name -> name.length() == 3);//2.第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。Stream<String> limit = stringStream.limit(3);//第二支队伍ArrayList<String> two = new ArrayList<>();Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");//3.第二个队伍只要姓 张 的成员姓名;存储到一个新集合中。Stream<String> stream1 = two.stream();Stream<String> stringStream1 = stream1.filter(name -> name.startsWith("张"));//4.第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。Stream<String> skip = stringStream1.skip(2);//5.将两个队伍 合并 为一个队伍;存储到一个新集合中。Stream<String> concat = Stream.concat(limit, skip);//6.根据姓名创建Person对象;存储到一个新集合中。Stream<Person> personStream = concat.map(name -> new Person(name));//7.打印整个队伍的Person对象信息。personStream.forEach(System.out::println);//        Person(name=喜羊羊)
//        Person(name=美羊羊)
//        Person(name=懒洋洋)
//        Person(name=张无忌)}
}
  • 完全使用链式编程,lambda表达式和方法引用完成代码
package com.csdn.streampractice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class StreamUltimate {public static void main(String[] args) {ArrayList<String> one = new ArrayList<>();Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");Stream<String> limit = one.stream().filter(name -> name.length() == 3).limit(3);ArrayList<String> two = new ArrayList<>();Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");Stream<String> skip = two.stream().filter(name -> name.startsWith("张")).skip(2);Stream.concat(limit, skip).map(Person::new).forEach(System.out::println);//        Person(name=喜羊羊)
//        Person(name=美羊羊)
//        Person(name=懒洋洋)
//        Person(name=张无忌)}
}

相关文章:

集合元素处理(传统方式和Stream方式)

1、集合元素处理&#xff08;传统方式&#xff09; 现在有两个ArrayList集合存储队伍当中的多个成员姓名&#xff0c;要求使用传统的for循环&#xff08;或增强for循环&#xff09;依次进行一下若干操作步骤&#xff1a; 第一个队伍只要 名字为 3 个字 的成员姓名&#xff1b;存…...

亲测好用,这3款免费高清录屏软件,效果惊人!

在当今社会上&#xff0c;录屏软件已经成为了人们日常生活中不可或缺的一部分。无论是在工作还是学习中&#xff0c;我们都需要使用录屏软件来录制屏幕上的内容。然而&#xff0c;许多录屏软件都是收费的&#xff0c;这对于那些想要尝试录屏软件但又不想花钱的人来说&#xff0…...

超声波清洗机洗眼镜真的可以洗干净吗?眼镜超声波清洗机推荐

截止2023年4月份近视眼的统计&#xff0c;我过近视人群高达3亿人&#xff0c;可想而知现在近视的群体是有多么庞大的。近视就免不了要戴眼镜&#xff0c;但是一副眼镜长时间的佩戴不清洗的话&#xff0c;镜片会不清晰&#xff0c;也有的朋友会眼镜脏了就去配一副新的&#xff0…...

centos7安装部署ElasticSearch

文章目录 ElasticSearch安装部署简介安装卸载 ElasticSearch安装部署 简介 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 es&#xff09;是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、G…...

websocket+node+vite(vue)实现一个简单的聊天

1.前端逻辑 本项目基于之前搭建的vite环境&#xff1a;https://blog.csdn.net/beekim/article/details/128083106?spm1001.2014.3001.5501 新增一个登录页和聊天室页面 <template><div>登录页</div><div>用户名:<input type"text" pl…...

YApi和Swagger接口管理

这篇博客针对苍穹外卖而写 YApi 之前的官网&#xff1a;yapi.smart-xwork.cn 由于之前的网址访问不了&#xff0c;现在我用的是这个网址&#xff1a;YApi Pro-高效、易用、功能强大的可视化接口管理平台 登录之后如下 创建两个工作空间 用户端接口也是如法炮制 Swagger 使用…...

在不安全的集群上启用 Elasticsearch Xpack 安全性

本博文详细描述如何把一个没有启动安全的 Elasticsearch 集群升级为一个带有 HTTPS 访问的启用 Elasticsearch xpack 安全的集群。 为了增强 Elasticsearch 集群的安全性&#xff0c;你需要执行完全集群重启&#xff0c;并在客户端进行一些更改。 启用身份验证后&#xff0c;所…...

vue清除动态路由

项目中往往都是添加动态路由&#xff0c;如何删除已经添加进来的路由往往被忽视&#xff0c;为此这里做一下记录&#xff1a; 查看vue-router路由文档 可以看出 Vue2中是通过matcher来进行重新赋值来进行清空的。 let createRouter () > new Router({mode: history, //ha…...

rsyslog实现将日志存储到mysql中

​ 前提&#xff1a;准备好msql server或mariadb server&#xff1b; ​ 1、安装rsyslog连接至mysql server的驱动模块&#xff1b; [13:24 rootcentos6.8~]# yum install -y rsyslog-mysql [13:24 rootcentos6.8~]# rpm -ql rsyslog-mysql /lib64/rsyslog/ommysql.so /usr/…...

2015架构案例(五十一)

第5题 【说明】某信息技术公司计划开发一套在线投票系统&#xff0c;用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户&#xff0c;当用户规模扩大到一定程度时&#xff0c;开始联系相关企业提供信息服务&#xff0c;并…...

亚马逊测评安全吗?

测评可以说是卖家非常宝贵的财富&#xff0c;通过测评和广告相结合&#xff0c;可以快速有效的提升店铺的产品销量&#xff0c;提高转化&#xff0c;提升listing权重&#xff0c;但现在很多卖家找真人测评补单后店铺出现问题导致大家对测评的安全性感到担忧&#xff0c;因为真人…...

VS2022新建项目时没有ASP.NET Web应用程序 (.NET Framework)

问题&#xff1a;如图&#xff0c;VS2022新建项目时没有“ASP.NET Web应用程序 &#xff08;.NET Framework&#xff09;”的选项解决方法&#xff1a;点击跳转至修改安装选项界面选择安装该项即可&#xff1a;...

TIA博途软件中如何设置在程序中自动显示变量的注释信息?

TIA博途软件中如何设置在程序中自动显示变量的注释信息? 本例以TIA博途V15为例进行举例说明 如下图所示,新建一个项目后,打开PLC变量表,这里我选择几个变量进行举例说明,给这几个变量添加注释信息, 打开OB1,编写一句简单的程序,如下图所示,可以看到此时变量只显示名称…...

Hadoop3教程(一):Hadoop的定义、组成及全生态概览

文章目录 &#xff08;1&#xff09;定义1.1 发展历史1.2 三大发行版本1.3 Hadoop的优势1.4 Hadoop的组成 &#xff08;13&#xff09;HDFS概述&#xff08;14&#xff09;Yarn架构&#xff08;15&#xff09;MapReduce概述&#xff08;16&#xff09; HDFS、YARN、MapReduce三…...

成为数据分析师要具备什么能力——功法篇(上)

这篇文章适合做了一段时间数据分析工作&#xff0c;开始思考怎么继续提升自己的分析师、运营或者是实习了一段时间的同学&#xff0c;这时的你也许会想几个问题&#xff1a; 为什么我做出来的分析总觉得没有别人的那么高级&#xff1f; 老板为什么总说我的分析“太浅了”&#…...

【MySQL】Java的JDBC编程

目录 ♫什么是JDBC ♫JDBC常用接口和类 ♪Connection接口 ♪Statement对象 ♪ResultSet对象 ♫JDBC的使用 ♪添加“驱动包” ♪创建数据源&#xff0c;描述数据库服务器在哪 ♪和数据库服务器建立连接 ♪构建SQL语句 ♪执行SQL语句 ♪释放资源 ♫什么是JDBC 我们前面操…...

windows OpenCV(包含cuda)最简安装教程

windows OpenCV&#xff08;包含cuda&#xff09;最简安装教程 1. 在Windows下安装vcpkg vcpkg是一个开源的C包管理器&#xff0c;它能帮助我们轻松地安装和管理C库和工具。要在Windows上安装vcpkg&#xff0c;可以按照以下步骤进行&#xff1a; 克隆vcpkg仓库&#xff1a; 首…...

Vue3 + Nodejs 实战 ,文件上传项目--实现文件批量上传(显示实时上传进度)

目录 技术栈 1.后端接口实现 2.前端实现 2.1 实现静态结构 2.2 整合上传文件的数据 2.3 实现一键上传文件 2.4 取消上传 博客主页&#xff1a;専心_前端,javascript,mysql-CSDN博客 系列专栏&#xff1a;vue3nodejs 实战--文件上传 前端代码仓库&#xff1a;jiangjunjie…...

狂砸40亿美元,亚马逊向OpenAI竞争对手Anthropic投资

9 月 25 日下午&#xff0c;亚马逊在公司官网发布&#xff0c;向大模型公司 Anthropic 投资 40 亿美元&#xff0c; Anthropic以拥有对标 ChatGPT 的谈天机器人 Claude 而出名。 这项新的战略合作将结合双方在更安全的生成式AI领域的技术和专业知识&#xff0c;加速Anthropic未…...

目标检测YOLO实战应用案例100讲-基于YOLOv5_tiny算法的路面裂缝智能检测

目录 前言 国内外研究现状 公路路面裂缝检测方法现状 基于深度学习检测算法现状...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...