练习:集合元素处理(传统方式)-练习:集合元素处理(Stream方式)
练习:集合元素处理(传统方式)
题目
现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环
依次进行以下若干操作步骤︰
1.第一个队伍只要名字为3个字的成员姓名﹔存储到一个新集合中。
2.第一个队伍筛选之后只要前3个人;存储到一个新集合中。
3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
4.第二个队伍筛选之后不要前2个人﹔存储到一个新集合中。
5.将两个队伍合并为一个队伍;存储到一个新集合中。
6.根据姓名创建Person对象;存储到一个新集合中。
7.打印整个队伍的Person对象信息。
两个对象(集合)的代码如下:
package A_Lian_two.D05;
import java.util.ArrayList;
public class Demo01StreamTest {
public static void main(String[] args) {
//第一支队伍
ArrayList<String> one = new ArrayList<>();
one.add("迪丽热巴");
one.add("asdf");
one.add("xcvz");
one.add("wear");
one.add("qwe");
one.add("cxv");
//第一队伍只要名字为3个字的成员姓名,存储到一个新集合中
ArrayList<String> one1 = new ArrayList<>();
for (String name : one) {
if (name.length()==3){
one1.add(name);
}
}
System.out.println(one1);
ArrayList<String> one2 = new ArrayList<>();
//第一队伍筛选之后只要前3个人;存储到一个新集合中
for (int i = 0; i < 3; i++) {
one2.add(one.get(i));
}
System.out.println(one2);
//第二支队伍
ArrayList<String> two = new ArrayList<>();
two.add("古力娜扎");
two.add("阿斯蒂芬");
two.add("adsf");
two.add("自行车v给");
two.add("we热情啊");
two.add("a速度");
//第二支队伍只要有a的成员
ArrayList<String> two1 = new ArrayList<>();
for (String name : two) {
if (name.startsWith("a")){
two1.add(name);
}
}
// System.out.println(two1);
//第二个队伍筛选之后不要前2个人,存储到一个新集合中
ArrayList<String> two2 = new ArrayList<>();
for (int i = 2; i < two1.size(); i++) {
two2.add(two1.get(i));//不包含0 1
}
//将两个队伍合并到一个队伍中
ArrayList<String> all = new ArrayList<>();
all.addAll(one2);
all.addAll(two2);
//根究姓名创建Person对象,存储到一个新集合中.
ArrayList<Person> list = new ArrayList<>();
for (String name : all) {
list.add(new Person(name));
}
//打印
for (Person name : list) {
System.out.println(name);
}
}
}
练习:集合元素处理(Stream方式)
题目
将上一题当中的传统for循环写法更换为Stream流式处理方式。两个集合的初始内容不变,Person类的定义也不变。
解答
等效的Stream流式处理代码为︰
//stream方法
Stream<String> oneStream = one.stream().filter(name -> name.length() == 3).limit(3);
Stream<String> twostream = two.stream().filter(name -> name.startsWith("a")).skip(2);
Stream.concat(oneStream,twostream).map(name->new Person(name)).forEach(p-> System.out.println(p));
练习:集合元素处理(传统方式)-练习:集合元素处理(Stream方式)的更多相关文章
- 使用Stream方式处理集合元素
package com.itheima.demo03.Stream;import java.util.ArrayList;import java.util.stream.Stream;/** * @a ...
- 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ...
- 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...
- 【转载】C#中List集合使用Last方法获取最后一个元素
在C#的List集合操作过程中,如果要获取List集合中的最后一个元素对象,则一般会先通过获取到list集合的个数Count属性,然后再使用索引的方式获取到该集合的最后一个位置的元素信息.其实在Lis ...
- Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)
1. 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 要求:不能创建新的集合,就在以前的集合上做. 2. 代码示例之 去除集合中重复元素,不创建新的集合: package ...
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...
- 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。
package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...
- list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作
list,set等集合遍历时,不能remove集合中的元素.需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAl ...
- 在JSP使用EL中判断指定元素是否存在于指定集合中
在JSP使用EL中判断指定元素是否存在于指定集合中 1.问题描述 在JSP页面中使用EL表达式判断一个指定元素是否存在于指定集合中? 2.问题解决 eg:指定集合:collection:{1,2,3, ...
随机推荐
- Python基础部分:10、数据类型的内置方法和字符编码
目录 一.数据类型内置方法 1.字典dict内置方法 1.1.类型转换 2.字典必须要掌握的方法 2.1.取值方式 2.2.修改内部数据值 2.3.删除数据 2.4.统计字典中键值对个数 2.5.字典 ...
- Docker | 常用命令——排错很有帮助
众所周知,docker 排查问题相较而言是困难的.因此,熟知一些常用命令对我们快速的排查定位问题是非常有帮助的.下面让我们一起来学习一下吧 1.显示docker的系统信息 docker info [r ...
- 发布 .NET 7 MAUI / MAUI Blazor 应用到 Windows 应用商店
.NET MAUI 目前仅允许发布 MSIX 包. 创建签名证书发布到本地传送门 [https://www.cnblogs.com/densen2014/p/16567384.html] 使用 Vis ...
- 2022春每日一题:Day 15
题目:Balanced lineup 题目说的很清楚了,没有修改,直接RMQ,模板题. 代码: #include <cstdio> #include <cstdlib> #in ...
- 2022春每日一题:Day 13
题目:后缀排序 什么是后缀数组?他主要包含两个数组:sa和rk. 其中sa[i]表示将字符串后缀排序后第i小的编号,rk[i]表示后缀i的排名. 显然sa[rk[i]]=i,rk[sa[i]]=i. ...
- 随笔——写windows服务的时候如何调试 c# .net
流程 1.更改项目 应用程序--输出类型--windows应用程序 改为 控制台应用程序 2.Program启动类中添加调用代码 3.服务类里面添加启动方法去启动OnStart和 Console.Re ...
- 说一下 ArrayList 和 LinkedList 的区别?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了基于动态数组 ArrayList 线性表,今天我们来讨论 ...
- nc传输文件结束后不退出
原因 版本不同 udp传输不会自动关闭 解决方案 nc -l 1234 > file.img nc ip 1234 -q 0 < file.img 采用tcp传输文件 -q 文件传输结束后 ...
- Linux 中的文件简单说明
Linux 中的文件简单说明 作者:Grey 原文地址: 博客园:Linux 中的文件简单说明 CSDN:Linux 中的文件简单说明 说明 本文基于 CentOS 7 根目录(/)下文件夹主要作用 ...
- 【每日一题】【动态规划&二分】2022年2月9日-NC91 最长上升子序列(三)
描述给定数组 arr ,设长度为 n ,输出 arr 的最长上升子序列.(如果有多个答案,请输出其中 按数值(注:区别于按单个字符的ASCII码值)进行比较的 字典序最小的那个) 方法1:双层循环实现 ...