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

3g版网站制作一般网站建设用什么语言

3g版网站制作,一般网站建设用什么语言,遂宁做网站,写作网站都有哪些ppp一、Stream流的核心概念什么是Stream流Java 8引入的函数式数据处理API,用于高效操作集合(Collection)、数组等数据源不是数据结构,不存储数据,而是通过管道操作处理数据源支持链式调用和惰性求值(Lazy Eval…

一、Stream流的核心概念

什么是Stream流

  • Java 8引入的函数式数据处理API,用于高效操作集合(Collection)、数组等数据源
  • 不是数据结构,不存储数据,而是通过管道操作处理数据源
  • 支持链式调用惰性求值(Lazy Evaluation)

核心特点

  • 无存储:不修改原始数据源
  • 函数式风格:支持Lambda表达式
  • 延迟执行:中间操作不会立即执行
  • 可消费性:流只能被使用一次
  • 声明式:更关注"做什么"而非"如何做"
  • 链式调用:通过方法链组合多个操作

Stream的组成

  1. 数据源:集合、数组、I/O资源等
  2. 中间操作:过滤、映射、排序等(返回新的Stream)
  3. 终端操作:触发计算并产生结果(如collect、forEach等)

操作类型

类型方法示例特点
中间操作filter()map()sorted()返回新Stream,可链式调用
终止操作forEach()collect()count()触发计算,流被消耗

二、Stream流使用全流程

1.Stream流的创建

从集合创建
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> streamFromList = list.stream();
从数组创建
String[] array = {"a", "b", "c"};
Stream<String> streamFromArray = Arrays.stream(array);
直接创建
Stream<String> directStream = Stream.of("a", "b", "c");

2.常用中间操作

操作说明示例
filter()条件过滤.filter(s -> s.contains("a"))
map()元素转换.map(String::length)
flatMap()扁平化转换(合并流).flatMap(list -> list.stream())
distinct()去重.distinct()
sorted()排序.sorted(Comparator.reverseOrder())
peek()调试用(不修改元素).peek(System.out::println)
过滤和限制
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");// 过滤以"A"开头的名字
List<String> result = names.stream().filter(name -> name.startsWith("A")).collect(Collectors.toList()); // [Alice]// 限制返回数量
List<String> limited = names.stream().limit(2).collect(Collectors.toList()); // [Alice, Bob]
映射
List<String> words = Arrays.asList("Java", "Stream", "API");// 转换为字符串长度
List<Integer> lengths = words.stream().map(String::length).collect(Collectors.toList()); // [4, 6, 3]// 扁平化流(flatMap)
List<List<String>> nestedList = Arrays.asList(Arrays.asList("a", "b"),Arrays.asList("c", "d")
);List<String> flatList = nestedList.stream().flatMap(List::stream).collect(Collectors.toList()); // [a, b, c, d]
排序
List<String> names = Arrays.asList("John", "Alice", "Bob", "Charlie");// 自然排序
List<String> sorted = names.stream().sorted().collect(Collectors.toList()); // [Alice, Bob, Charlie, John]// 自定义排序
List<String> customSorted = names.stream().sorted((s1, s2) -> s2.compareTo(s1)).collect(Collectors.toList()); // [John, Charlie, Bob, Alice]
去重
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 3, 4);
List<Integer> distinct = numbers.stream().distinct().collect(Collectors.toList()); // [1, 2, 3, 4]

3.常用终止操作

操作说明示例
forEach()遍历.forEach(System.out::println)
collect()转换为集合.collect(Collectors.toList())
toArray()转换为数组.toArray(String[]::new)
reduce()聚合计算.reduce(0, Integer::sum)
min()/max()极值查找.max(Comparator.naturalOrder())
count()计数.count()
anyMatch()任意元素匹配.anyMatch(s -> s.startsWith("A"))
收集结果
List<String> collected = Stream.of("a", "b", "c").collect(Collectors.toList()); // [a, b, c]Set<String> collectedSet = Stream.of("a", "b", "c").collect(Collectors.toSet()); // [a, b, c] (顺序可能不同)String joined = Stream.of("a", "b", "c").collect(Collectors.joining(", ")); // "a, b, c"
遍历
Stream.of("a", "b", "c").forEach(System.out::println); // 打印每个元素
匹配
boolean anyStartsWithA = Stream.of("apple", "banana", "apricot").anyMatch(s -> s.startsWith("a")); // trueboolean allStartsWithA = Stream.of("apple", "apricot", "avocado").allMatch(s -> s.startsWith("a")); // trueboolean noneStartsWithZ = Stream.of("apple", "banana", "cherry").noneMatch(s -> s.startsWith("z")); // true

四、实战技巧与最佳实践

避免嵌套循环

// 传统方式
for (Order order : orders) {for (Item item : order.getItems()) {if (item.isActive()) {activeItems.add(item);}}
}// Stream优化
List<Item> activeItems = orders.stream().flatMap(order -> order.getItems().stream()).filter(Item::isActive).collect(Collectors.toList());

并行流加速处理

long count = largeList.parallelStream()  // 使用多核并行处理.filter(obj -> obj.getValue() > 100).count();

短路优化性能

boolean hasAdmin = users.stream().anyMatch(user -> "admin".equals(user.getRole()));  // 找到即终止

分组与分区

// 按年龄分组
Map<Integer, List<Person>> ageGroups = people.stream().collect(Collectors.groupingBy(Person::getAge));// 分区:年龄是否>=18
Map<Boolean, List<Person>> adults = people.stream().collect(Collectors.partitioningBy(p -> p.getAge() >= 18));

自定义收集器

// 拼接字符串
String joined = stream.collect(Collectors.joining(", ", "[", "]"));

        通过掌握Stream API,可使代码简洁性提升50%+,同时利用并行流可大幅提升大数据处理效率。重点理解操作链的惰性求值特性流的一次性消费原则,避免常见陷阱。

http://www.dtcms.com/a/476430.html

相关文章:

  • 网站开发工程师 能做什么南昌网站建设托管
  • 网站备案 是域名还是空间浏览器app下载安装
  • 如果只做p2p种子搜索网站关键词你们都搜什么
  • 玉田县建设工程招标网站网站创建多少钱
  • 郑州做网站公司 卓美建设工程施工包括哪些工程
  • 58同城商业后台如何做网站wordpress 工作原理
  • 乐清柳市阿里巴巴做网站的仿照别人的网站做违法吗
  • 广西工程建设质量管理协会网站深圳做棋牌网站建设哪家好
  • 商丘柘城做网站人力资源公司网站模板
  • 杭州高瑞网站建设网站建设价格套餐
  • 阳泉营销型网站建设费用如何增加网站的索引量
  • 自己建一个电商网站吗策划书模板
  • 桂林网站建设服务电话手机网站建设需求
  • 网站换友链平台什么叫网络营销目标市场
  • 做平面设计什么素材网站好使12306 网站谁做的
  • 请描述网站开发的一般流程图网站设计技能培训
  • 做网站编辑需要什么文凭做明星同款的网站
  • 平谷建站推广做网站需要知道什么软件
  • 网站树状型结构优化wordpress初始设置密码
  • 网站开发小程序青岛设计网站的公司哪家好
  • 中山网站建设品牌wordpress uc点赞
  • 在网上做效果图赚钱的网站中国航发网上电子商城网址
  • 网站开发服务器的选择中国建设银行官网招聘
  • 佛山建设银行网站wordpress易语言
  • 网站管理和维护的主要工作有哪些安卓项目开发
  • 如何选择网站域名网站开发工程师 能做什么
  • 企业网站上线中文 wordpress 主题
  • 百度seo推广计划类型包含哪些行业适合做seo
  • 高端企业网站设计成都高新区规划建设局网站
  • 网站打开慢的解决方法广州网站建设公司兴田德润可以不