练习:集合元素处理(传统方式)-练习:集合元素处理(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, ...
随机推荐
- 一、什么是Kubernetes
一.什么是Kubernetes 它是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本.Borg是谷歌内部使用的大规模集群 ...
- rocky8删除/etc/fstab 和/boot/所有文件,通过光盘救援模式恢复
rocky8删除/etc/fstab 和/boot/所有文件,通过光盘救援模式恢复 mkdir /rootdir 先通过df和lsblk确定那个分区是根,如果确定不了,就先挂载一个分区,查看里边的文件 ...
- day05-JavaScript02
JavaScript02 8.JavaScript函数 JavaScript函数介绍 函数是由事件驱动的,或者当它被调用时,执行的可重复使用的代码 例子 <!DOCTYPE html> & ...
- 三种梯度下降法的对比(BGD & SGD & MBGD)
常用的梯度下降法分为: 批量梯度下降法(Batch Gradient Descent) 随机梯度下降法(Stochastic Gradient Descent) 小批量梯度下降法(Mini-Batch ...
- Linux--多线程(三)
生产者消费者模型 概念: 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题.生产者和消费者彼此之间不直接通讯,而通过一个来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给 ...
- 华为开发者大会HDC2022:HMS Core 持续创新,与开发者共创美好数智生活
11月4日,华为开发者大会HDC2022在东莞松山湖拉开帷幕.HMS Core在本次大会上带来了包括音频编辑服务的高拟真歌声合成技术.视频编辑服务的智能提取精彩瞬间功能.3D Engine超大规模数字 ...
- 云实例初始化工具cloud-init源码分析
源码分析 代码结构 cloud-init的代码结构如下: cloud-init ├── bash_completion # bash自动补全文件 │ └── cloud-init ├── Chan ...
- ElasticSearch深度分页详解
1 前言 ElasticSearch是一个实时的分布式搜索与分析引擎,常用于大量非结构化数据的存储和快速检索场景,具有很强的扩展性.纵使其有诸多优点,在搜索领域远超关系型数据库,但依然存在与关系型数据 ...
- 2022春每日一题:Day 32
题目:[USACO12DEC]First! G 不太记得当时怎么想的了,但是显然,当一个字符串的前缀存在则他一定不是first,然后做法:对于每个字符串,把每个字符结尾跟他有相同前缀的单词的同元素建边 ...
- 读Bilgin Ibryam 新作 《Dapr 是一种10倍数 平台》
Bilgin Ibryam 最近加入了开发者软件初创公司Diagrid Inc,他是Apache Software Foundation 的 committer 和成员.他也是一个开源的布道师,并且是 ...