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

java-stream流

Stream流

可用于操作集合或数组中的数据
优势:Stream流大量结合了Lambda语法风格编程,代码简介,可读性好

使用步骤

在这里插入图片描述

获取Stream流

  • 获取集合的stream流
    在这里插入图片描述
  • 获取数组的stream流
    在这里插入图片描述
    在这里插入图片描述
public class streamdemo2 {public static void main(String[] args) {//stream流//获取集合的stream流:调用集合提供的stream()方法Collection<String> list = new ArrayList<>();Stream<String> s1 = list.stream();//Map集合获取stream流Map<String,String> map = new HashMap<>();Stream<String> s2 = map.keySet().stream();//获取键流Stream<String> s3 = map.values().stream();//获取值流Stream<Map.Entry<String,String>> s4 = map.entrySet().stream();//获取键值对流//获取数组的流String[] arr = {"张三","李四","王五"};Stream<String> s5 = Arrays.stream(arr);System.out.println(s5.count());Stream<String> s6 = Stream.of("张三","李四","王五");}
}

Stream流的常用(中间)方法

  • 中间方法指的是调用完成后会返回新的Stream流,可继续使用(支持链式编程)
    在这里插入图片描述
public class streamdemo3 {public static void main(String[] args) {//stream流常用的中间方法,对流上数据进行处理(返回新流,支持链式编程)List< String> list = new ArrayList<>();list.add("古月方源");list.add("古月方正");list.add("古月青书");list.add("谢晗沐");list.add("白凝冰");list.add("古月博");//1、过滤方法list.stream().filter(s -> s.startsWith("古月")&&s.length()==4).forEach(System.out::println);//排序方法List<Double> list2 = new ArrayList<>();list2.add(12.3);list2.add(12.5);list2.add(12.1);list2.add(12.7);list2.add(12.4);list2.add(12.2);list2.add(12.2);list2.stream().sorted().forEach(System.out::println);//默认升序System.out.println("-------------------------");list2.stream().sorted((s1,s2)-> Double.compare(s2,s1)).forEach(System.out::println);//降序System.out.println("-------------------------");list2.stream().sorted((s1,s2)-> Double.compare(s2,s1)).limit(2).forEach(System.out::println);//只要前2名System.out.println("-------------------------");list2.stream().sorted((s1,s2)-> Double.compare(s2,s1)).skip(2).forEach(System.out::println);//跳过前2名System.out.println("-------------------------");//若希望自定义对象去重,要重写对象的hashCode和equals方法list2.stream().sorted((s1,s2)-> Double.compare(s2,s1)).distinct().forEach(System.out::println);//去重//加工方法/映射方法:将流中的数据拿出来变成新数据再放到流上list2.stream().map(s -> "加10后:"+(s+10)).forEach(System.out::println);//合并流Stream<String> s1 = Stream.of("张三","李四","王五");Stream<Integer> s2 = Stream.of(1,2,3,4,5);Stream<Object> s3 = Stream.concat(s1,s2);}
}

终结方法

在这里插入图片描述

收集stream流

在这里插入图片描述

public class streamdemo4 {public static void main(String[] args) {//stream流的统计、收集操作(终结方法)List<People> people = new ArrayList<>();people.add(new People("张三", 18, 5000));people.add(new People("方源", 18, 50000));people.add(new People("王五", 19, 6000));people.add(new People("洪亭", 20, 30000));people.add(new People("武庸", 30, 7000));people.stream().filter(p -> p.getSalary() > 10000).forEach(System.out::println);long count = people.stream().filter(p -> p.getSalary() > 10000).count();System.out.println(count);Optional<People> max = people.stream().max((p1, p2) -> Double.compare(p1.getSalary(), p2.getSalary()));People Maxpeople = max.get();System.out.println(Maxpeople);Optional<People> min = people.stream().min((p1, p2) -> Double.compare(p1.getSalary(), p2.getSalary()));People Minpeople = min.get();System.out.println(Minpeople);System.out.println("------------------------");List< String> list = new ArrayList<>();list.add("古月方源");list.add("古月方正");list.add("古月青书");list.add("谢晗沐");list.add("白凝冰");list.add("古月博");list.add("古月方正");//流只能收集一次//收集到集合或数组中Stream<String> s1 = list.stream().filter(s -> s.startsWith("古月"));List<String> list1 = s1.collect(Collectors.toList());System.out.println(list1);/*Set<String> set1 = new HashSet<>();set1.addAll( list1);*///收集到set集合Stream<String> s2 = list.stream().filter(s -> s.startsWith("古月"));Set<String> set = s2.collect(Collectors.toSet());System.out.println(set);//收集到数组中Stream<String> s3 = list.stream().filter(s -> s.startsWith("古月"));Object[] arr = s3.toArray();System.out.println(Arrays.toString(arr));System.out.println("------------------------");//收集到map集合中,键是老师名字,值是老师薪水Map<String, Double> map = people.stream().collect(Collectors.toMap(People::getName, People::getSalary));System.out.println(map);}
}
http://www.dtcms.com/a/411249.html

相关文章:

  • spiffs分区文件系统在esp idf的创建
  • php网站开发技术描述南昌seo网站排名
  • html5微网站做网站原型图软件
  • 86-python电网可视化项目-6
  • 长乐住房和城乡建设局网站wordpress文章页面
  • 技术拐点将至:AI 大模型的挑战突围与产业重构
  • 青海省住房和城乡建设部网站关键词排名优化软件价格
  • 图片做多的网站是哪个邢台移动网站设计
  • TypeScript 中避免使用 @ts-ignore 的最佳方案
  • 数据传输一致性保障:如何避免‘少数据’或‘脏数据’?
  • Product Hunt 每日热榜 | 2025-09-26
  • 北京公司网站建设定制全国十大装修公司最有名的是
  • 鸿蒙开发入门经验分享:从零开始构建自己的HarmonyOS应用(ArkTS)
  • 解锁安全新维度:Cybersecurity AI (CAI) 助力提升网络安全效率!
  • FastAPI WebSocket 由浅入深的开发范例
  • 义乌免费做网站怎么创业呢白手起家
  • 网站维护运营好做吗建筑工程网络数据安全管理系统
  • 怎么制作外贸网站模板wordpress给会员发信
  • 西安跨境电商平台网站淘宝网网站设计分析
  • SSL 证书的重要性
  • 快速上手XXL-JOB
  • 分组交换总结
  • 亚马逊网站怎么做做网站一般注册商标哪个类
  • daily notes[54]
  • 机器学习——决策树详解
  • 万象EXCEL开发(六)excel单元格运算逻辑 ——东方仙盟金丹期
  • Redis数据结构和常用命令
  • 网站开发用什么开发无锡新吴区建设环保局网站
  • 深圳易捷网站建设计算机(网站建设与维护)
  • 智能微电网 —— 如何无缝集成分布式光伏 / 风电?