java基础-stream流练习

练习一:

复制代码
package Day03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class StreamPractice01 {
    public static void main(String[] args) {
        //定义一个集合,存储整数1,2,3,4,5,6,7,8,9,10
        //过滤掉奇数,只保留偶数
        //并把结果存起来
        ArrayList<Integer> list=new ArrayList<>();
        Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);
        //Stream流
        List<Integer> collect = list.stream()
                .filter(s -> s % 2 == 0)
                .collect(Collectors.toList());
        System.out.println(collect);
    }
}

练习二:

复制代码
package Day03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;

public class StreamPractice02 {
    public static void main(String[] args) {
        //
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"zhangsan,23","lisi,24","wangwu,25");
        Map<String, Integer> collect = list.stream()
                .filter(s -> Integer.parseInt(s.split(",")[1]) >= 24)
                .collect(Collectors.toMap(s -> s.split(",")[0], s -> Integer.parseInt(s.split(",")[1])));
        System.out.println(collect);
    }
}
复制代码
package Day03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamPractice03 {
    public static void main(String[] args) {
        //创建一个男演员的集合
        ArrayList<Actor> actorMan = new ArrayList<>();
        //创建一个女演员的集合
        ArrayList<Actor> actorWoman = new ArrayList<>();
        Collections.addAll(actorMan,new Actor("刘昊然",21),
                new Actor("张成",22),
                new Actor("侯昊",23),
                new Actor("王安宇",24),
                new Actor("林一",25),
                new Actor("王鹤棣",26));
        Collections.addAll(actorWoman,new Actor("赵丽颖",21),
                new Actor("杨幂",22),
                new Actor("迪丽热巴",23),
                new Actor("杨澜",24),
                new Actor("杨紫",25),
                new Actor("赵露思",26));
        //1、男演员只要名字为3个字的前面两个人
        List<Actor> listMan = actorMan.stream()
                .filter(s -> s.getName().length() == 3)
                .limit(2)
                .collect(Collectors.toList());
        //2、女演员只要姓杨,并且不要第一个
        List<Actor> listWoman = actorWoman.stream()
                .filter(s -> s.getName().startsWith("杨"))
                .skip(1)
                .collect(Collectors.toList());
        //这样分开会代码更清晰一点
//        Stream.concat(listMan.stream(),listWoman.stream())
//                .forEach(s-> System.out.println(s.getName()+","+s.getAge()));

        //当然也可以整在一起,就是天书
        Stream.concat(actorMan.stream()
                .filter(s -> s.getName().length() == 3)
                .limit(2),
                actorWoman.stream()
                        .filter(s -> s.getName().startsWith("杨"))
                        .skip(1))
                .forEach(s -> System.out.println(s.getName()+" "+s.getAge()));

    }
}

上面是理解错题目的意思了,正确的是下面

复制代码
package Day03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamPractice03 {
    public static void main(String[] args) {
        //创建一个男演员的集合
        ArrayList<String> actorMan = new ArrayList<>();
        //创建一个女演员的集合
        ArrayList<String> actorWoman = new ArrayList<>();
        Collections.addAll(actorMan,"刘昊然,22","张成,22","侯昊,23","王安宇,24","林一,25","王鹤棣,26");
        Collections.addAll(actorWoman,"赵丽颖,21","杨幂,22","迪丽热巴,23","杨澜,24","杨紫,25","赵露思,26");
        //1、男演员只要名字为3个字的前面两个人
        actorMan.stream()
                .filter(s->s.split(",")[0].length()==3)
                .limit(2);

        //2、女演员只要姓杨,并且不要第一个
        actorWoman.stream()
                .filter(s->s.startsWith("杨"))
                .skip(1);
        //3、把过滤后的男女演员合在一起
        Stream.concat(
                actorMan.stream()
                        .filter(s->s.split(",")[0].length()==3)
                        .limit(2),
                actorWoman.stream()
                        .filter(s->s.startsWith("杨"))
                        .skip(1));
                        //.forEach(s-> System.out.println(s));
        //4、把上面一步的数据封装成一个Actor对象
        //类型转化用Map
        Stream.concat(
                actorMan.stream()
                        .filter(s->s.split(",")[0].length()==3)
                        .limit(2),
                actorWoman.stream()
                        .filter(s->s.startsWith("杨"))
                        .skip(1))
                .map(s->new Actor(s.split(",")[0],Integer.parseInt(s.split(",")[1])));
                //.forEach(s-> System.out.println(s));
        //5、把上面的再放到list集合中
        List<Actor> list = Stream.concat(
                        actorMan.stream()
                                .filter(s -> s.split(",")[0].length()==3)
                                .limit(2),
                        actorWoman.stream()
                                .filter(s -> s.startsWith("杨"))
                                .skip(1))
                .map(s -> new Actor(s.split(",")[0], Integer.parseInt(s.split(",")[1])))
                .collect(Collectors.toList());
        System.out.println(list);
    }
}

从上面可以看出,一步步之后,stream就会变的越来越复杂

相关推荐
LGL6030A17 小时前
Java学习历程26——线程安全
java·开发语言·学习
遨游xyz17 小时前
排序-快速排序
开发语言·python·排序算法
pcm12356717 小时前
设计C/S架构的IM通信软件(4)
java·c语言·架构
iFeng的小屋17 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_5613596717 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL16817 小时前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
傻啦嘿哟18 小时前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
Data_Journal18 小时前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
德育处主任Pro18 小时前
纯前端网格路径规划:PathFinding.js的使用方法
开发语言·前端·javascript
serve the people18 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php