正题开始

Student 类
具有属性:
不及格次数failCount,
名字name,
科任老师chineseTeacher,
班主任classTeacher

题目1:筛选学生不及格次数3次及3次以上的学生列表

  List<String> arrayList = array.stream().filter(s -> s.getFailCount()>=3).map(s -> s.getName()).collect(Collectors.toList());System.out.println(arrayList);

题目2:筛选班主任和科任老师负责的学生中有多少个不及格次数超过2次的

Map<String, List<Student>> arrayList1 = array.stream().filter(s -> s.getFailCount()>=2).collect(Collectors.groupingBy(Student::getChineseTeacher));Map<String, List<Student>> arrayList2 = array.stream().filter(s -> s.getFailCount()>=2).collect(Collectors.groupingBy(Student::getClassTeacher));

题目3:筛选不及格次数超过2次且班主任不是安妮和张远的

  List<Student> arrayList3=array.stream().filter(s -> s.getFailCount()>=2 && (!"安妮".equals(s.getClassTeacher()) && !"张远".equals(s.getClassTeacher()))).collect(Collectors.toList());

题目4:提取学生列表中所有学生的名字

List<String> arrayList4 = array.stream().map(s -> s.getName()).collect(Collectors.toList());

题目5:提取不及格次数为0的学生为三好学生并给isMeritStudent 赋值

      List<Student> arrayList5 = array.stream().map(s -> {if (s.getFailCount() == 0) {s.setMeritStudent(true);} else {s.setMeritStudent(false);}
return s;}).collect(Collectors.toList());

题目6:统计所有老师的名字

 Map<String,java.util.List<test.Student>> arrayList6 = array.stream().collect(Collectors.groupingBy(Student::getChineseTeacher));Map<String,java.util.List<test.Student>> arrayList7 = array.stream().collect(Collectors.groupingBy(Student::getClassTeacher));

题目7:有如下整数1,-1,-2,-3,-4,-5 使用Stream取元素绝对值并打印

Stream<Integer> stream = Stream.of(1, -2, -3, 4,-5);stream.map(Math::abs).forEach(System.out::println);

题目8:给定一个数字列表,如何返回一个由每个数的平方构成的列表

//给定1,2,3,4,5应该返回1,4,9,16,25
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);        list.stream().map((x) -> x * x).forEach(System.out::println);

如下有7个元素黄药师,冯蘅,郭靖,黄蓉,郭蓉 ,郭襄,郭破虏

题目9:使用stream将以郭字开头的元素存入新集合

Stream<String> stream =Stream.of("黄药师","冯蘅","郭靖","黄蓉","郭蓉","郭襄","郭破虏");List<String> list = stream.collect(Collectors.toList());stream.filter(e->e.startWiths("郭")).forEach(e->System.out.println(e));

已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风}
题目10:取出前两个元素并在控制台打印输出
题目11:取出后两个元素并在控制台打印输出

     List str = new ArrayList<>();str.add("陈玄风");str.add("梅超风");str.add("陆乘风");str.add("曲灵风");str.add("武眠风");str.add("冯默风");str.add("罗玉风");Stream<String> stream=str.stream();stream.limit(2).forEach(e->System.out.println(e));System.out.println("--------------------");Stream<String> stream1=str.stream();stream1.skip(str.size()-2).forEach(e->System.out.println(e));

题目12:找出2011年发生的所有交易, 并按交易额排序(从低到高)
class Transaction {
private int year; //交易时间
private int value; //交易额
方法。。。}

 List transactions =Arrays.asList(new Transaction(2011, 300),new Transaction(2012, 1000),new Transaction(2011, 400),new Transaction(2012, 710),new Transaction(2011, 200),new Transaction(2012, 700),new Transaction(2012, 950));List<Transaction> transactions =Arrays.asList(new Transaction(2011, 300),new Transaction(2012, 1000),new Transaction(2011, 400),new Transaction(2012, 710),new Transaction(2011, 200),
new Transaction(2012, 700),new Transaction(2012, 950));Stream<Transaction> stream=transactions.stream();Stream<Transaction> stream2=stream.filter(e->e.getYear()==2011).sorted((tran1,tran2)->tran1.getValue()-tran2.getValue());stream2.forEach(e->System.out.println(e));

题目13:怎样使用map和reduce方法数一数流中有多少个Employee呢?

题目14:现在有两个Arraylist集合,分别存储6名男演员和6女演员的名称,要求完成如下的操作:
public class Actor {
private String name;
public Actor(String name) { this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; } }

女演员只要姓林的,并且不要第一个

   Stream<String> stream1 = womanList.stream().filter(s -> s.startsWith("林")).skip(1);

题目15:把过滤后的男演员女演员合并

    Stream<String> concat = Stream.concat(stream, stream1);

题目16:把上一步的操作后的元素作为构造方法的参数创建演员Actor对象,并遍历

concat.map(Actor::new).forEach(actor -> System.out.println(actor.getName()));

我国有34个省级行政区,分别是:
23个省:河北省、山西省、吉林省、辽宁省、黑龙江省、陕西省、甘肃省、青海省、山东省、福建省、浙江省、台湾省、河南省、湖北省、湖南省、江西省、江苏省、安徽省、广东省、海南省、四川省、贵州省、云南省。
4个直辖市:北京市、天津市、上海市、重庆市。 5个自治区:内蒙古自治区、新疆维吾尔自治区、宁夏回族自治区、广西壮族自治区、西藏自治区。
2个特别行政区:香港特别行政区、澳门特别行政区。 请使用流依次完成下列操作:
题目17:统计三个字的省份的个数
题目18:统计名字中包含方位名词的省份(东西南北)的个数
题目19:打印名字中包含方位名词的普通省份(非自治区直辖市特别行政区)的名字
题目20:将所有的特殊省份(自治区直辖市特别行政区)提取出来并放到新数组中

public static void main(String[] args) {String[] arr = {"河北省", "山西省", "吉林省", "辽宁省","黑龙江省", "陕西省", "甘肃省", "青海省", "山东省","福建省", "浙江省", "台湾省", "河南省", "湖北省","湖南省", "江西省", "江苏省", "安徽省", "广东省","海南省", "四川省", "贵州省", "云南省", "北京市","天津市", "上海市", "重庆市", "内蒙古自治区","新疆维吾尔自治区", "宁夏回族自治区", "广西壮族自治区","西藏自治区", "香港特别行政区", "澳门特别行政区"};
//-----
1.list.stream().filter(s -> s.length() == 3).collect(Collection.toList());
2.list.stream().filter(s -> s.contains("东") ||  s.contains("南") ||  s.contains("西") ||  s.contains("北")).collect(Collection.toList);
3.list.stream().filter(s -> !s.contains("自治区直辖市特别行政区").collect(Collection.toList());
4.list.stream().filter(s -> s.contains("自治区直辖市特别行政区").collect(Collection.toList());

当然实际开发中会涉及到比题目中更难的需求,stream流其实帮我们解决了很多问题。
当我们需要对list进行分组,合并的时候不再那么繁琐。

Java8--20道关于Stream流的题目练习相关推荐

  1. 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>

    需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...

  2. java stream byte_乐字节-Java8新特性之Stream流(上)

    上一篇文章,小乐给大家介绍了<Java8新特性之方法引用>,下面接下来小乐将会给大家介绍Java8新特性之Stream,称之为流,本篇文章为上半部分. 1.什么是流? Java Se中对于 ...

  3. java8新特性之Stream流

    一.什么是Stream流 Stream是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤.映射数据等操作,使用Stream API对集合数据进行操作就 ...

  4. Java8函数式编程、Stream流、Option的使用,一篇足够了

    为什么要学 大数量下处理集合效率高 代码可读性高 消灭嵌套地狱 // 查询未成年作家的评分在70以上的书籍 List<Book> bookList = new ArrayList<& ...

  5. Java8新特性之Stream流式编程

    特地感谢鲁班大叔的分享,原学习地址:Java8 Stream流式编程爱 撸码就是快,流式编程好 代码传家宝 以下是学习过程整理的笔记 1.简介 Stream 流处理,首先要澄清的是 java8 中的 ...

  6. Java8新特性-使用Stream流来实现递归遍历树形结构(案例)

    Java8新特性-Stream流 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来 ...

  7. Java8 方法引用和Stream流

    Stream 流API 什么是流 流的操作种类 流的操作过程 使用流 创建流 集合 数组 值 筛选 filter 去重 distinct 截取 limit 跳过 skip 映射 map 合并多个流 是 ...

  8. java8函数式编程之Stream流处理的方法和案例讲解

    函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算. 为什么Java需要Lambda表达式 ...

  9. Java8新特性之Stream流的使用

    Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作,在新版的JPA中,也已经加入了Stream. 1.Stream的操作步骤 Stream有如下三个操 ...

最新文章

  1. 手动安装boost库
  2. debian换源_WSL2安装Debian(Ubuntu)并配置国内apt源
  3. 按Sybase的PowerDesigner工具设计的数据库模型 --- 解析生成能兼容多种数据库的相应的C#底层代码...
  4. CCF CSP202112-1 序列查询
  5. 二叉树层次遍历--广度遍历和深度遍历
  6. web自动化测试---第一个自动化测试用例
  7. python-mysql-excel-正则表达式,综合使用
  8. flask 请求上下文
  9. 一键安装WinRAR主题界面美化
  10. boblog任意变量覆盖漏洞(二)
  11. 数字电子技术第二章--逻辑代数与逻辑函数化简
  12. cisco模拟器无线路由器
  13. 惯量比多少合适_惯量比计算公式
  14. cad一直正在加载_cad一直加载打不开怎么办,cad打不开的四种解决办法
  15. idea如何连接夜神模拟器
  16. 欢迎使用CSDN-markdown编辑器新手小白初来乍到想在此好好学习天天向上
  17. stm32f103停止模式低功耗设置(最低5.7ua)
  18. 从十亿光年到0.1飞米
  19. Spring 缓存的详解
  20. 计算机课怎样退出广播,关闭了无线广播怎么办?

热门文章

  1. 中南林注册教育邮箱加获取JetBrains个人许可证,续订许可证
  2. 再见Spring Security、推荐一款功能强大的权限认证框架
  3. 数组的方法-push(),pop(),unshift(),shift()
  4. Linux 浏览器下安装 Flash
  5. Vulkan学习(十五): 总结
  6. window系统安装msysgit(Git客户端软件)教程
  7. TFS2010 创建项目时提示“未能解析远程主机”的解决办法
  8. 代价函数,损失函数,目标函数区别
  9. (9)隐蔽通道重点知识复习笔记
  10. netcat 使用方法