当前位置: 首页 > news >正文

Java 的 Stream

一、创建 Stream

1.1、创建 Stream 流

1.1.1、List 集合获取 Stream 流

Collection<String> list = new ArrayList<>();
Stream<String> s1 = list.stream();

1.1.2、Map 集合获取 stream 流

Map<String, Integer> map = new HashMap<>();
// 键流
Stream<String> s2 = map.keySet().stream();
// 值流
Stream<Integer> s3 = map.values().stream();
// 键值对
Stream<Map.Entry<String, Integer>> s4 = map.entrySet().stream();

1.1.3、数组获取 Stream 流

String[] strs = {"A", "B", "C"};
Stream<String> s5 = Arrays.stream(strs);
Stream<String> s6 = Stream.of(strs);

1.2、方法分类

1.2.1、中间方法

1.2.2、终结方法

1.2.3、收集方法 

 二、代码操作

public class MyUser {private Integer id;private String name;private Integer score;private List<String> menus;public MyUser() {}public MyUser(Integer id, String name, Integer score, List<String> menus) {this.id = id;this.name = name;this.score = score;this.menus = menus;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public List<String> getMenus() {return menus;}public void setMenus(List<String> menus) {this.menus = menus;}@Overridepublic String toString() {return "Merchant{" +"id=" + id +", name='" + name + '\'' +", score=" + score +", menus=" + menus +'}';}
}
    public static void main(String[]args){MyUser myUser1 = new MyUser(1,"AA",11, Arrays.asList("A","B","C"));MyUser myUser2 = new MyUser(2,"BB",22, Arrays.asList("D","E","F"));MyUser myUser3 = new MyUser(3,"CC",19, Arrays.asList("O","P","H"));MyUser myUser4 = new MyUser(4,"DD",33, Arrays.asList("K","J","I"));MyUser myUser5 = new MyUser(5,"EE",39, Arrays.asList("X","M","N"));List<MyUser> list = Arrays.asList(myUser1,myUser2,myUser3,myUser4,myUser5);// 遍历plist.stream().forEach(s -> System.out.println(s));// 取最大值、最小值Comparator<? super MyUser> comparator = Comparator.comparing(MyUser::getScore);Optional<MyUser> max = list.stream().max(comparator);Optional<MyUser> min = list.stream().min(comparator);System.out.println("max: "+max);System.out.println("min: "+min);// 单个属性加减乘除,生成新集合。List<MyUser> collect1 = list.stream().map(x -> {x.setScore(x.getScore()+100);return x;}).collect(Collectors.toList());System.out.println("collect1: "+collect1);// 过滤元素 对原集合的成员的属性修改list.stream().filter(x->x.getId()>2).forEach(x -> {x.setName(x.getName()+100);});System.out.println("list22: "+list);// 统计//统计员工人数Long count = list.stream().collect(Collectors.counting());//求平均工资Double average = list.stream().collect(Collectors.averagingDouble(MyUser::getScore));//求最高工资Optional<Integer> max2 = list.stream().map(MyUser::getScore).collect(Collectors.maxBy(Integer::compare));//求工资之和Integer sum = list.stream().collect(Collectors.summingInt(MyUser::getScore));//一次性统计所有信息DoubleSummaryStatistics collect = list.stream().collect(Collectors.summarizingDouble(MyUser::getScore));System.out.println("统计员工人数:"+count);System.out.println("求平均工资:"+average);System.out.println("求最高工资:"+max2);System.out.println("求工资之和:"+sum);System.out.println("一次性统计所有信息:"+collect);// 过滤后 转为 MapMap map =list.stream().filter(s->s.getId()>3).collect(Collectors.toMap(s->s.getId(),y->y));System.out.println("map:"+map);}

 

http://www.lryc.cn/news/121727.html

相关文章:

  • SolidUI社区-Discord
  • Spring MVCSpring Boot
  • 01-集群安装JDK(普通用户)
  • 小龟带你妙写排序之选择排序
  • 深入解析 SOCKS5 代理及其在网络安全与爬虫中的应用
  • day9 10-牛客67道剑指offer-JZ66、19、20、75、23、76、8、28、77、78
  • 气体检测仪语音报警芯片,可自行烧录的音频芯片,WT588F02B-8S
  • gdb 调试汇编
  • WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制
  • 深入理解与运用Android Jetpack ViewModel
  • 【数据库】P0 创建数据库环境 MySQL + DataGrip
  • js设置css变量控制页面一行展示指定个数的元素
  • 4.0 Spring Boot入门
  • [国产MCU]-BL602开发实例-I2C与总线设备地址扫描
  • Python Opencv实践 - 图像平移
  • 易服客工作室:WordPress 6.3性能改进
  • LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题
  • 山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台
  • Golang-语言源码级调试器 Delve
  • 构建Docker容器监控系统(Cadvisor +InfluxDB+Grafana)
  • 【Vue3】keep-alive 缓存组件
  • 24成都信息工程大学809软件工程考研
  • Filament for Android 编译搭建(基于Ubuntu20.04系统)
  • 【MySQL--->数据库操作】
  • PhotoShop2023 Beta AI版安装教程
  • 并发冲突导致流量放大的线上问题解决
  • Spring Cloud Gateway过滤器GlobalFilter详解
  • 【LeetCode】1281.整数的各位积和之差
  • 22、springboot的Profile(通过yml配置文件配置 profile,快速切换项目的开发环境)
  • 2023-08-12力扣每日一题-暴力hard