练习:集合元素处理(传统方式)

题目

现在有两个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方式)的更多相关文章

  1. 使用Stream方式处理集合元素

    package com.itheima.demo03.Stream;import java.util.ArrayList;import java.util.stream.Stream;/** * @a ...

  2. 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤

    使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ...

  3. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

  4. 【转载】C#中List集合使用Last方法获取最后一个元素

    在C#的List集合操作过程中,如果要获取List集合中的最后一个元素对象,则一般会先通过获取到list集合的个数Count属性,然后再使用索引的方式获取到该集合的最后一个位置的元素信息.其实在Lis ...

  5. Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)

    1. 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)     要求:不能创建新的集合,就在以前的集合上做. 2. 代码示例之 去除集合中重复元素,不创建新的集合: package ...

  6. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素

    1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...

  7. 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。

    package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...

  8. list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作

    list,set等集合遍历时,不能remove集合中的元素.需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAl ...

  9. 在JSP使用EL中判断指定元素是否存在于指定集合中

    在JSP使用EL中判断指定元素是否存在于指定集合中 1.问题描述 在JSP页面中使用EL表达式判断一个指定元素是否存在于指定集合中? 2.问题解决 eg:指定集合:collection:{1,2,3, ...

随机推荐

  1. MySQL高可用集群MHA方案

    MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...

  2. Java线程未捕获异常处理 UncaughtExceptionHandler

    当一个线程在执行过程中抛出了异常,并且没有进行try..catch,那么这个线程就会终止运行.在Thread类中,提供了两个可以设置线程未捕获异常的全局处理器,我们可以在处理器里做一些工作,例如将异常 ...

  3. Java函数式编程:三、流与函数式编程

    本文是Java函数式编程的最后一篇,承接上文: Java函数式编程:一.函数式接口,lambda表达式和方法引用 Java函数式编程:二.高阶函数,闭包,函数组合以及柯里化 前面都是概念和铺垫,主要讲 ...

  4. Go语言核心36讲17

    在前面的文章中,我们已经提到过很多次"指针"了,你应该已经比较熟悉了.不过,我们那时大多指的是指针类型及其对应的指针值,今天我们讲的则是更为深入的内容. 让我们先来复习一下. ty ...

  5. libc-bin : Depends: libc6 (< 2.20) but 2.27-3ubuntu1 is installed问题解决

    为了下载代码,在计算云上按照某个傻瓜文档操作后,ubuntu不仅没达到预定效果,反而无论如何操作,都出现 root@SZX1000450533:/var/lib/dpkg# apt-get autor ...

  6. vcenter的虚拟机开机进入bios

  7. php 导出图片为pdf

    require_once ROOTPATH . 'tcpdf/vendor/autoload.php';$html='';if($html){ mpdf($html); }else{ echo &qu ...

  8. 第2-4-3章 规则引擎Drools基础语法-业务规则管理系统-组件化-中台

    目录 4. Drools基础语法 4.1 规则文件构成 4.2 规则体语法结构 4.3 注释 4.4 Pattern模式匹配 4.5 比较操作符 4.5.1 语法 4.5.2 操作步骤 4.6 执行指 ...

  9. adb版本不同导致一个服务杀死另一个服务

    前言 由于我用安装模拟器进行调试app,需要连接到固定端口, 而开发测试的时候用到eclipse中调用sdk中包含一个版本的adb, 另外Android killer中也包含一个版本的adb, 另外我 ...

  10. springcloudgateway学习

    API网关 大型项目开发过程中,往往都是由各个不同的微服务组成的,服务可能分布在不同地区不同机房,那用户如何知道访问某服务的时候该服务的实际地址呢,这时候就需要API网关了 API 网关就像服务的门面 ...