可变参数和Strem流
可变参数
可变参数用在方法的形式参数的位置,它可以看做是一个数组,可以接收多个实际参数。
public static void main(String[] args){int sum1=getSum(3,4,5); //求3,4,5的和int sum2=getSum(1,2,3,4,5,6); //求1,2,3,4,5,65的和int[] array={1,2,3,4,5,6};int sum2=getSum(array); //求1,2,3,4,5,65的和
}//求任意几个数的和
//int... array : 可变参数,可以接收多个int类型的值
public static int getSum(int... array){int sum=0;for(int i=0;i<array.length;i++){sum+=array[i];}return sum;
}
可变参数的运用
.
List<String> list2 = List.of("hello", "world", "java");
System.out.println(list2); Set<String> set = Set.of("hello", "java", "world");
System.out.println(set);Map<String, Integer> map = Map.of("张三", 20, "李四", 30, "王五", 40);
System.out.println(map);
Stream流
JDK8提供了Stream流用来对集合或者数组进行操作,使用Stream流需要经过下面的几个步骤。
1.获取流 (创建流水线)
2.中间操作 (流水线操作环节)
3.终结操作 (流水线上的最后环节)
获取流
1.单列集合获取流Stream stream = 集合对象.stream();2.双列集合获取流(不能直接获取流,需要转换为单列集合才可以获取流)//键集,获取流Stream keyStream=map.keySet().stream();//值集,获取流Stream valueStream=map.values().stream();//键值对集,获取流Stream entryStream=map.entrySet().stream(); 3.数组获取流、同一个类型的多个数据获取流Integer[] array={1,2,3,4,5};Stream arrayStream1=Stream.of(array);Stream arrayStream2=Stream.of(1,2,3,4,5);
中间操作
中间操作的方法返回值还是一个Stream流,可以继续调用其他方法。
fliter: 对元素进行过滤
limit: 截取前面n个元素
skip: 跳过前面n个元素
sorted: 对元素进行排序,如果排序规则不符合自己的要求可以自定义比较器
distinct: 去除重复元素
map: 对流中的元素进行转换concat: 把两个流合并为1个流Stream<Integer> stream1=List.of(1,2,3,4).stream();Stream<Integer> stream2=List.of(5,6,7,8).stream();举例: 把stream1和stream2合并为1个流Stream stream3=Stream.concat(stream1,stram2)
终结操作
forEach: 遍历元素
count: 统计个数collect: 收集剩余的元素到新的集合toList: 把元素放到List集合中toSet: 把元素放到Set集合中toMap: 把元素放到Map集合需要给定2个Lambda表达式,分别表示键和值
Stream流练习
按要求完成代码
1.创建一个Student类,有name和age两个属性
2.创建一个ArrayList集合,往集合中添加10个Student对象
3.使用Stream流过滤集合中年龄>20的元素
4.跳过前面的2个元素
5.截取前面的4个元素
6.尝试对流中的元素,进行以下终结操作
1)把Stream流中的元素打印
2)把Stream流中的元素收集成List集合
3)把Stream流中的元素收集成Map集合,姓名是键、年龄是值。
ArrayList<Student> list=new ArrayList<>();
list.add(new Student("张三",20));
list.add(new Student("李四",18));
list.add(new Student("王五",19));
list.add(new Student("赵六",25));
list.add(new Student("田七",27));
list.add(new Student("王炸",28));
list.add(new Student("小王",26));
list.add(new Student("大王",24));
list.add(new Student("蘑菇头",23));
list.add(new Student("妹爷",29));
list.add(new Student("老王",30));
list.add(new Student("老李",22)); //演示Stream流的过滤、跳过、截取、转换、遍历功能
list.stream().filter(s -> s.getAge() > 20) //过滤年龄>20的学生.skip(2) //跳过前面2个.limit(4) //截取前面4个.map(s -> s.getName()) //把Student元素转换为String姓名.forEach(s -> System.out.println(s)); //遍历输出System.out.println("-----------------");//演示Stream流的过滤、跳过、截取、最后收集成List的功能
List<Student> list1 = list.stream().filter(s -> s.getAge() > 20) //过滤年龄>20的学生.skip(2) //跳过前面2个.limit(4) //截取前面4个.collect(Collectors.toList()); //把剩余的元素收集成List集合
System.out.println(list1);System.out.println("-----------------");
//演示Stream流的过滤、跳过、截取、最后收集成Map的功能
Map<String,Integer> map=list.stream().filter(s -> s.getAge() > 20) //过滤年龄>20的学生.skip(2) //跳过前面2个.limit(4) //截取前面4个.collect(Collectors.toMap(s -> s.getName(),s -> s.getAge())); //把剩余的元素收集为Map集合
System.out.println(map);
可变参数和Strem流相关推荐
- 可变参数和Steam流的基本使用
1.可变参数 2.不可变集合 3. Steam流 3.1 对象流化 3.2 操作流的方法 3.3 收集方法 1.可变参数 内容是比较简单的,就介绍一下如何使用吧 public static void ...
- list转map stream_advancedday10可变参数不可变集合及Stream流
可变参数 可变参数指的是,方法参数的个数可以发生改变.但是其本质是一个数组,在方法把可变参数当做数组来使用就可以了. //可变参数的格式:数据类型...参数名public static void 方法 ...
- Java学习笔记18:Java_Map集合_HashMap集合_可变参数_Stream流_多线程_线程同步_生产者消费者
文章目录 1.Map集合 1.1Map集合概述和特点[理解] 1.2Map集合的基本功能[应用] 1.3Map集合的获取功能[应用] 1.4Map集合的遍历(方式1)[应用] 1.5Map集合的遍历( ...
- 参数控制c语言代码走向,C语言可变参数完全解读
本文转自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html 一.是什么 我们学习C语言时最经常使用printf()函 ...
- Linux 打印可变参数日志
实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...
- printf 函数使用 可变参数函数实现原理
一. Printf 和scanf 函数格式 Printf 和 scanf 家族函数都属于可变参数函数(variadic function).这种函数需要固定数量的强制参数,后面是数量可变的可选参数. ...
- 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端
文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...
- C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块
文章目录 一. Linux下串口编程的流程 1.打开串口 2. 串口初始化 2.1 常用函数总览 2.2 初始化 3. 串口的读写 4. 串口关闭 二.代码--串口编程实现自发自收 三.可变参数控制串 ...
- 7. Java不可变集合和Stream流
Java不可变集合和Stream流 1. 不可变集合 2. Stream流 2.1 概述 2.2 Stream流的获取 2.3 Stream流的常用API 2.4 Stream流的综合应用 2.5 收 ...
最新文章
- 【怒怼老乔】居然苹果手机IOS系统还不支持css3的transparent属性值,我去~~~~
- SAP PM入门系列33 - IP16 维修计划报表
- Laravel 集成 JPush 极光推送指北
- SQL语句统计每天、每月、每年的 数据
- 小明分享|LVGL调试日志
- 【数学建模】层次分析法AHP(评价与决策)
- 钱穆的中学读书事(作者王国华)
- 带有批注的Spring硒测试
- Linux如何通过csv导入neo4j,Neo4j-csv文件导入
- 学习笔记 : 表达式目录树相关问题参照该demo expression拼接与拆解 expression转sql...
- 阿里云OpenSearch使用体验V1
- linux 环境下设置Kettle的转换,作业定时执行简单操作
- Win10驱动签名总结
- 配置 择时 sel stock
- 【MySQL 面试系列】索引原理
- eNSP学习记录一——创建网络拓扑并配置
- Python神经网络4之数据读取、神经网络
- NVT 66X增加WIFI命令
- 没戏,做不到,不存在的“不可能三角”
- IDM(Internet Download Manager)下载器使用
热门文章
- C# winform DevExpress上传图片
- 研究生二年级下学期工作计划安排
- 《学习记录》“Python”收款程序
- cocos2d-x的初步学习二十一之iosandroid跨平台环境配置
- 常用波特率计数查找表
- scrm客户管理系统如何提升售后服务质量
- 题8.18:编一程序,输入月份号,输出该月的英文月名。例如,输人3,则输出“March“ ,要 求用指针数组处理。
- vue+element后台管理系统(下载excel表格)
- 【日照seo多少钱】一名出色的推广优化师应具备的7大能力?
- JAVA微信公众号开发入门