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

做民宿加盟哪些网站比较好谷歌浏览器手机版免费官方下载

做民宿加盟哪些网站比较好,谷歌浏览器手机版免费官方下载,河南招标投标信息网,做网站怎么文章目录 前言一、Stream概述1.1 什么是 Stream?1.2 Stream 和集合的区别 二、Stream的创建方式2.1 基于集合创建2.2 基于数组创建2.3 使用 Stream.generate()2.4 使用 Stream.iterate() 三、Stream常见操作3.1 中间操作(Intermediate)① fil…

文章目录

  • 前言
  • 一、Stream概述
    • 1.1 什么是 Stream?
    • 1.2 Stream 和集合的区别
  • 二、Stream的创建方式
    • 2.1 基于集合创建
    • 2.2 基于数组创建
    • 2.3 使用 `Stream.generate()`
    • 2.4 使用 `Stream.iterate()`
  • 三、Stream常见操作
    • 3.1 中间操作(Intermediate)
      • ① filter:过滤元素
      • ② map:映射操作
      • ③ flatMap:扁平化处理
      • ④ sorted:排序
    • 3.2 终端操作(Terminal)
      • ① collect:将流转换为集合
      • ② reduce:合并元素
  • 四、并行流处理
  • 五、使用 Stream 处理用户数据
  • 六、总结


前言

Java Stream 是 Java 8 引入的一项强大特性,主要用于处理集合数据。它提供了类似于函数式编程的方式,使代码更加简洁、易读,同时提高了效率。本文将详细介绍 Stream 的基本概念、常用操作、使用场景。


一、Stream概述

1.1 什么是 Stream?

Stream 是 Java 8 中引入的一个新接口,它专注于对集合对象进行处理,支持类似 SQL 的操作,例如:过滤、映射、排序、统计、收集等。Stream 提供了链式操作方式,使代码简洁且易读。

1.2 Stream 和集合的区别

特性Stream集合
数据存储方式不存储数据,仅处理数据流存储数据
是否可复用只能使用一次可重复使用
是否支持惰性求值惰性求值,仅在终端操作时才会执行不支持惰性求值
并行处理支持多核并行处理不支持直接并行处理

二、Stream的创建方式

2.1 基于集合创建

import java.util.stream.Stream;
import java.util.List;public class StreamDemo {public static void main(String[] args) {List<String> list = List.of("Java", "Python", "C++", "Go");// 将集合转换为 StreamStream<String> stream = list.stream();stream.forEach(System.out::println);}
}

2.2 基于数组创建

import java.util.stream.Stream;public class StreamFromArray {public static void main(String[] args) {String[] languages = {"Java", "Python", "C++"};Stream<String> stream = Stream.of(languages);stream.forEach(System.out::println);}
}

2.3 使用 Stream.generate()

import java.util.stream.Stream;public class StreamGenerate {public static void main(String[] args) {// 无限流,生成随机数,限制输出5个Stream<Double> randomStream = Stream.generate(Math::random).limit(5);randomStream.forEach(System.out::println);}
}

2.4 使用 Stream.iterate()

import java.util.stream.Stream;public class StreamIterate {public static void main(String[] args) {// 从1开始,每次加2,生成偶数流Stream<Integer> stream = Stream.iterate(1, n -> n + 2).limit(5);stream.forEach(System.out::println);}
}

三、Stream常见操作

3.1 中间操作(Intermediate)

中间操作返回新的流对象,不会触发终端操作。常见的中间操作包括:

  • filter(Predicate):过滤元素
  • map(Function):映射操作
  • flatMap(Function):扁平化操作
  • sorted(Comparator):排序
  • distinct():去重
  • limit(n):限制流中元素个数
  • skip(n):跳过前 n 个元素

① filter:过滤元素

import java.util.stream.Stream;public class FilterDemo {public static void main(String[] args) {Stream.of("Java", "Python", "Go", "C++").filter(lang -> lang.length() > 3).forEach(System.out::println);}
}

② map:映射操作

将元素转换为新的形式:

import java.util.stream.Stream;public class MapDemo {public static void main(String[] args) {Stream.of("java", "python", "c++").map(String::toUpperCase).forEach(System.out::println);}
}

③ flatMap:扁平化处理

将流中的元素展开成单个元素流:

import java.util.stream.Stream;public class FlatMapDemo {public static void main(String[] args) {Stream.of("Java,Python", "Go,C++").flatMap(lang -> Stream.of(lang.split(","))).forEach(System.out::println);}
}

④ sorted:排序

对流进行排序:

import java.util.stream.Stream;public class SortedDemo {public static void main(String[] args) {Stream.of(5, 3, 8, 1, 2).sorted().forEach(System.out::println);}
}

3.2 终端操作(Terminal)

终端操作会触发流的执行,并返回结果。常见的终端操作包括:

  • forEach(Consumer):遍历
  • collect(Collectors):收集
  • count():计数
  • reduce(BinaryOperator):合并
  • min(Comparator)max(Comparator):最小值和最大值
  • anyMatchallMatchnoneMatch:匹配操作

① collect:将流转换为集合

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class CollectDemo {public static void main(String[] args) {List<String> list = Stream.of("Java", "Python", "Go").collect(Collectors.toList());System.out.println(list);}
}

② reduce:合并元素

import java.util.stream.Stream;public class ReduceDemo {public static void main(String[] args) {int sum = Stream.of(1, 2, 3, 4).reduce(0, Integer::sum);System.out.println("Sum: " + sum);}
}

四、并行流处理

Java Stream 支持多线程并行处理,通过 parallelStream() 可以实现自动并行计算。

import java.util.List;public class ParallelStreamDemo {public static void main(String[] args) {List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);// 并行流处理numbers.parallelStream().map(num -> num * 2).forEach(System.out::println);}
}

五、使用 Stream 处理用户数据

import java.util.List;
import java.util.stream.Collectors;class User {String name;int age;public User(String name, int age) {this.name = name;this.age = age;}
}public class StreamCase {public static void main(String[] args) {List<User> users = List.of(new User("Alice", 23),new User("Bob", 30),new User("Charlie", 27),new User("David", 35));// 筛选年龄大于25岁的用户,并按年龄排序List<String> names = users.stream().filter(u -> u.age > 25).sorted((u1, u2) -> Integer.compare(u1.age, u2.age)).map(u -> u.name).collect(Collectors.toList());System.out.println("筛选结果: " + names);}
}

六、总结

  1. Stream 提供了简洁、易读的集合操作方式,常用于数据过滤、映射、聚合等操作。
  2. 中间操作返回新的流对象,不执行终端操作不会触发计算。
  3. 终端操作触发流的计算并返回结果。
  4. 并行流可轻松实现多线程并行处理。

✅ 使用 Stream 可以提高代码的可读性和开发效率,尤其在集合数据处理时非常实用!

http://www.dtcms.com/wzjs/470437.html

相关文章:

  • 怎么做营销型网站设计自建网站平台有哪些
  • 阿里云服务器怎么建网站网络营销推广经验总结
  • 石家庄网站建设今天改网名百度账号登陆入口
  • 个人网站页面设计需要那些步骤爱站网seo查询
  • 轻栈小程序官网seo咨询服务价格
  • 电子商务网站的整个建设流程搜索引擎营销的主要方式有
  • 下载建设银行官方网站广州网络推广外包
  • 做网站需要招什么微信朋友圈广告推广
  • 网站备案域名更改发广告去哪个平台
  • 旅游网站设计页面销售管理
  • 专业的网站制作正规公司域名官网
  • 快速建站代理北京seo优化哪家好
  • 企业网站怎么做才能留住客户会计培训
  • 推荐中山精品网站建设百度推广官网首页
  • 社交网站可以做亚马逊联盟吗百度网页版主页网址
  • 接私活 做网站免费seo在线工具
  • 巩义网站建设案例课堂谷歌搜索引擎363入口
  • 公司设计图平面鞍山seo外包
  • 大良招聘网站建设网站优化排名哪家好
  • 品牌策划公司网站网络建站平台
  • ui设计师对学历要求网站搜索关键词优化
  • 打折网站运营思路百度一下首页官网百度
  • 跨境电商网站如何做推广方案推广营销app
  • 高端的佛山网站建设站长
  • 网站做子页面怎么做的推广引流哪个软件最好
  • 南京网站制作公司排名百度网页版
  • 智慧团建网站入口手机版邯郸seo排名
  • 做茶网站百度账号快速注册
  • 郑州做网站公司有多少百度推广和百度竞价有什么区别
  • 广元做开锁网站南京网站推广排名