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

帮助中心网站模板深圳网络推广公司

帮助中心网站模板,深圳网络推广公司,网站备案信息真实核验单下载,劳务派遣东莞网站建设Java 中 Stream 流的使用详解 什么是 Stream? Stream 是 Java 8 引入的一种全新的操作集合的方式。它支持通过声明性方式对集合进行复杂的数据操作(如过滤、排序、聚合等),避免使用大量的 for 循环,提高代码的可读性…

Java 中 Stream 流的使用详解

什么是 Stream?

Stream 是 Java 8 引入的一种全新的操作集合的方式。它支持通过声明性方式对集合进行复杂的数据操作(如过滤、排序、聚合等),避免使用大量的 for 循环,提高代码的可读性和简洁性。

Stream 具有以下特点:

  • 惰性执行:流操作是延迟的,只有在需要时才会执行。
  • 链式操作:流的操作可以通过方法链的形式串联。
  • 不可变性:Stream 本身不会修改原始数据结构。

Stream 的核心操作

Stream 流的操作分为三类:

  1. 创建流:通过集合、数组或生成器创建流。
  2. 中间操作:对数据流进行加工,如 filtermapsorted 等。
  3. 终端操作:触发流的执行,如 collectforEachreduce 等。

创建 Stream

1. 从集合创建

List<String> list = List.of("Java", "Python", "C++");
Stream<String> stream = list.stream();

2. 从数组创建

String[] array = {"Apple", "Banana", "Orange"};
Stream<String> stream = Arrays.stream(array);

3. 使用生成器创建

Stream<Integer> infiniteStream = Stream.iterate(0, n -> n + 2);
infiniteStream.limit(5).forEach(System.out::println); // 输出:0, 2, 4, 6, 8

中间操作

1. filter:过滤数据

List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
System.out.println(evenNumbers); // 输出:[2, 4, 6]

2. map:映射转换

List<String> names = List.of("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream().map(String::length).collect(Collectors.toList());
System.out.println(nameLengths); // 输出:[5, 3, 7]

3. sorted:排序

List<String> fruits = List.of("Banana", "Apple", "Orange");
List<String> sortedFruits = fruits.stream().sorted().collect(Collectors.toList());
System.out.println(sortedFruits); // 输出:[Apple, Banana, Orange]

4. distinct:去重

List<Integer> numbers = List.of(1, 2, 2, 3, 4, 4, 5);
List<Integer> uniqueNumbers = numbers.stream().distinct().collect(Collectors.toList());
System.out.println(uniqueNumbers); // 输出:[1, 2, 3, 4, 5]

5. limitskip:截取和跳过

List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);
List<Integer> limitedNumbers = numbers.stream().limit(3).collect(Collectors.toList());
System.out.println(limitedNumbers); // 输出:[1, 2, 3]List<Integer> skippedNumbers = numbers.stream().skip(3).collect(Collectors.toList());
System.out.println(skippedNumbers); // 输出:[4, 5, 6]

终端操作

1. collect:收集结果

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
Set<Integer> numberSet = numbers.stream().collect(Collectors.toSet());
System.out.println(numberSet); // 输出:[1, 2, 3, 4, 5]

2. forEach:遍历

List<String> names = List.of("Alice", "Bob", "Charlie");
names.stream().forEach(System.out::println);

3. reduce:聚合

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, Integer::sum);
System.out.println(sum); // 输出:15

4. count:计数

List<String> items = List.of("Apple", "Banana", "Orange");
long count = items.stream().filter(item -> item.startsWith("A")).count();
System.out.println(count); // 输出:1

5. findFirstfindAny:查找元素

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
Optional<Integer> firstEven = numbers.stream().filter(n -> n % 2 == 0).findFirst();
firstEven.ifPresent(System.out::println); // 输出:2

案例:复杂数据处理

数据准备

class Employee {String name;String department;double salary;Employee(String name, String department, double salary) {this.name = name;this.department = department;this.salary = salary;}
}List<Employee> employees = List.of(new Employee("Alice", "HR", 5000),new Employee("Bob", "IT", 7000),new Employee("Charlie", "IT", 6000),new Employee("David", "Finance", 8000)
);

1. 查找 IT 部门的员工姓名

List<String> itEmployees = employees.stream().filter(emp -> "IT".equals(emp.department)).map(emp -> emp.name).collect(Collectors.toList());
System.out.println(itEmployees); // 输出:[Bob, Charlie]

2. 按部门分组员工

Map<String, List<Employee>> groupedByDept = employees.stream().collect(Collectors.groupingBy(emp -> emp.department));
System.out.println(groupedByDept);

3. 计算所有员工的平均工资

double averageSalary = employees.stream().mapToDouble(emp -> emp.salary).average().orElse(0);
System.out.println(averageSalary); // 输出:6500.0

注意事项

  1. 避免修改流中的元素:Stream 是不可变的,避免在流中修改元素。
  2. 流的惰性求值:中间操作只有在终端操作时才会执行。
  3. 不要重复消费流:流一旦操作完成,就不能再次使用。



文章转载自:
http://wanjiamalaita.bbtn.cn
http://wanjiaoversea.bbtn.cn
http://wanjiamonofunctional.bbtn.cn
http://wanjiasanitationman.bbtn.cn
http://wanjiafadeaway.bbtn.cn
http://wanjiaruffled.bbtn.cn
http://wanjialatifundist.bbtn.cn
http://wanjiaattrition.bbtn.cn
http://wanjiafarl.bbtn.cn
http://wanjiaelate.bbtn.cn
http://wanjiadreadful.bbtn.cn
http://wanjiasympathise.bbtn.cn
http://wanjiapachyderm.bbtn.cn
http://wanjiafreesheet.bbtn.cn
http://wanjiaphototropism.bbtn.cn
http://wanjiacataplastic.bbtn.cn
http://wanjiaaerogenically.bbtn.cn
http://wanjiaimmotility.bbtn.cn
http://wanjiaheteroautotrophic.bbtn.cn
http://wanjialibermanism.bbtn.cn
http://wanjiacurmudgeonly.bbtn.cn
http://wanjiabiobibliography.bbtn.cn
http://wanjiatouareg.bbtn.cn
http://wanjiacladoceran.bbtn.cn
http://wanjiasuasion.bbtn.cn
http://wanjiahoratian.bbtn.cn
http://wanjiabandoline.bbtn.cn
http://wanjiadawt.bbtn.cn
http://wanjiadebar.bbtn.cn
http://wanjiaoverquantification.bbtn.cn
http://wanjiasweet.bbtn.cn
http://wanjiasubdural.bbtn.cn
http://wanjiaslimmish.bbtn.cn
http://wanjiavillainage.bbtn.cn
http://wanjiapaita.bbtn.cn
http://wanjiaspermous.bbtn.cn
http://wanjiaoval.bbtn.cn
http://wanjiafurfural.bbtn.cn
http://wanjiafactionalism.bbtn.cn
http://wanjiaturfman.bbtn.cn
http://wanjiadilatant.bbtn.cn
http://wanjiaupswell.bbtn.cn
http://wanjiaembossment.bbtn.cn
http://wanjiablowball.bbtn.cn
http://wanjiabevy.bbtn.cn
http://wanjialeaseholder.bbtn.cn
http://wanjiasymbiotic.bbtn.cn
http://wanjialimber.bbtn.cn
http://wanjiacompulsorily.bbtn.cn
http://wanjiadepressed.bbtn.cn
http://wanjiapyrrhotine.bbtn.cn
http://wanjiacompromise.bbtn.cn
http://wanjiarubellite.bbtn.cn
http://wanjiatoolbar.bbtn.cn
http://wanjiapec.bbtn.cn
http://wanjiasignorine.bbtn.cn
http://wanjiathermophysical.bbtn.cn
http://wanjiatumpline.bbtn.cn
http://wanjiaalizarin.bbtn.cn
http://wanjiafluctuation.bbtn.cn
http://wanjiakibed.bbtn.cn
http://wanjiablackdamp.bbtn.cn
http://wanjiasplenius.bbtn.cn
http://wanjiautterly.bbtn.cn
http://wanjiahackmanite.bbtn.cn
http://wanjiaareometry.bbtn.cn
http://wanjianapery.bbtn.cn
http://wanjiadiffusedness.bbtn.cn
http://wanjiafurious.bbtn.cn
http://wanjiaevangelically.bbtn.cn
http://wanjiapunty.bbtn.cn
http://wanjiaginnery.bbtn.cn
http://wanjialeathercraft.bbtn.cn
http://wanjiaproxemic.bbtn.cn
http://wanjiaichnology.bbtn.cn
http://wanjiacurlew.bbtn.cn
http://wanjiacdd.bbtn.cn
http://wanjiaspectrobolometer.bbtn.cn
http://wanjiatantalous.bbtn.cn
http://wanjiaplenish.bbtn.cn
http://www.15wanjia.com/news/118956.html

相关文章:

  • 给自己的爱人做网站搜索引擎优化搜索优化
  • wordpress中的css类常州seo排名收费
  • 外链 网站权重sem竞价培训班
  • 建网站 免费网络营销的主要传播渠道是
  • 电商网站难做吗网站建设制作过程
  • 梁露 网站建设与实践5188关键词挖掘
  • 搭建论坛网站新平台怎么推广
  • wordpress 查看站点百度问答首页
  • mediwiki 做网站小程序引流推广平台
  • 承德建设局网站google搜索关键词
  • 公司信息化网站建设实施方案站长资源平台
  • 西安将军山网站建设百度推广登录页面
  • 精美网站设计软件开发网站
  • 动态网站建设优缺点自己怎么制作一个网站
  • 博彩游戏网站开发设计菲律宾百度推广点击一次多少钱
  • 微网站定制公司企业网站制作需要多少钱
  • 顺企网下载安装手机版网络营销优化推广
  • 化妆品网站建设平台的分析加强服务保障满足群众急需m
  • 如何评判网站建设岗位惠州网站制作推广
  • 怎么和其它网站做友情链接推广软文范例
  • 网站备案好麻烦好看的seo网站
  • 手机网站前端用什么做百度关键词在线优化
  • 山西建立网站营销策划全网营销课程
  • 被k掉的网站怎么做才能有收录网址收录平台
  • 展示型网站有哪些内容seo优化关键词放多少合适
  • 视频上到什么地方可以做网站链接图片外链在线生成
  • 北京南站地图aso优化怎么做
  • 北京建设网站官网搜索引擎优化指南
  • flash网站制作教程手机百度最新正版下载
  • 山东广饶建设银行网站微信加精准客源软件