可变参数

可变参数用在方法的形式参数的位置,它可以看做是一个数组,可以接收多个实际参数。

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流相关推荐

  1. 可变参数和Steam流的基本使用

    1.可变参数 2.不可变集合 3. Steam流 3.1 对象流化 3.2 操作流的方法 3.3 收集方法 1.可变参数 内容是比较简单的,就介绍一下如何使用吧 public static void ...

  2. list转map stream_advancedday10可变参数不可变集合及Stream流

    可变参数 可变参数指的是,方法参数的个数可以发生改变.但是其本质是一个数组,在方法把可变参数当做数组来使用就可以了. //可变参数的格式:数据类型...参数名public static void 方法 ...

  3. Java学习笔记18:Java_Map集合_HashMap集合_可变参数_Stream流_多线程_线程同步_生产者消费者

    文章目录 1.Map集合 1.1Map集合概述和特点[理解] 1.2Map集合的基本功能[应用] 1.3Map集合的获取功能[应用] 1.4Map集合的遍历(方式1)[应用] 1.5Map集合的遍历( ...

  4. 参数控制c语言代码走向,C语言可变参数完全解读

    本文转自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html 一.是什么 我们学习C语言时最经常使用printf()函 ...

  5. Linux 打印可变参数日志

    实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...

  6. printf 函数使用 可变参数函数实现原理

    一. Printf 和scanf 函数格式 Printf 和 scanf 家族函数都属于可变参数函数(variadic function).这种函数需要固定数量的强制参数,后面是数量可变的可选参数. ...

  7. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  8. C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块

    文章目录 一. Linux下串口编程的流程 1.打开串口 2. 串口初始化 2.1 常用函数总览 2.2 初始化 3. 串口的读写 4. 串口关闭 二.代码--串口编程实现自发自收 三.可变参数控制串 ...

  9. 7. Java不可变集合和Stream流

    Java不可变集合和Stream流 1. 不可变集合 2. Stream流 2.1 概述 2.2 Stream流的获取 2.3 Stream流的常用API 2.4 Stream流的综合应用 2.5 收 ...

最新文章

  1. 【怒怼老乔】居然苹果手机IOS系统还不支持css3的transparent属性值,我去~~~~
  2. SAP PM入门系列33 - IP16 维修计划报表
  3. Laravel 集成 JPush 极光推送指北
  4. SQL语句统计每天、每月、每年的 数据
  5. 小明分享|LVGL调试日志
  6. 【数学建模】层次分析法AHP(评价与决策)
  7. 钱穆的中学读书事(作者王国华)
  8. 带有批注的Spring硒测试
  9. Linux如何通过csv导入neo4j,Neo4j-csv文件导入
  10. 学习笔记 : 表达式目录树相关问题参照该demo expression拼接与拆解 expression转sql...
  11. 阿里云OpenSearch使用体验V1
  12. linux 环境下设置Kettle的转换,作业定时执行简单操作
  13. Win10驱动签名总结
  14. 配置 择时 sel stock
  15. 【MySQL 面试系列】索引原理
  16. eNSP学习记录一——创建网络拓扑并配置
  17. Python神经网络4之数据读取、神经网络
  18. NVT 66X增加WIFI命令
  19. 没戏,做不到,不存在的“不可能三角”
  20. IDM(Internet Download Manager)下载器使用

热门文章

  1. C# winform DevExpress上传图片
  2. 研究生二年级下学期工作计划安排
  3. 《学习记录》“Python”收款程序
  4. cocos2d-x的初步学习二十一之iosandroid跨平台环境配置
  5. 常用波特率计数查找表
  6. scrm客户管理系统如何提升售后服务质量
  7. 题8.18:编一程序,输入月份号,输出该月的英文月名。例如,输人3,则输出“March“ ,要 求用指针数组处理。
  8. vue+element后台管理系统(下载excel表格)
  9. 【日照seo多少钱】一名出色的推广优化师应具备的7大能力?
  10. JAVA微信公众号开发入门