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

360做的网站网站建设及优化 赣icp

360做的网站,网站建设及优化 赣icp,seo平台怎么样,网络管理系统软件有哪些引言 Java 8引入了许多新特性#xff0c;其中最为显著的莫过于Lambda表达式和Stream API。Stream API提供了一种高效、简洁的方法来处理集合数据#xff0c;使代码更加简洁明了#xff0c;且具有较高的可读性和可维护性。本文将深入探讨Java Stream API的使用#xff0c;包…引言 Java 8引入了许多新特性其中最为显著的莫过于Lambda表达式和Stream API。Stream API提供了一种高效、简洁的方法来处理集合数据使代码更加简洁明了且具有较高的可读性和可维护性。本文将深入探讨Java Stream API的使用包括基础概念、常用操作、并行处理、实战案例以及最佳实践等内容。 目录 什么是Stream APIStream API的基础操作 创建Stream中间操作终端操作 Stream API的高级操作 排序筛选映射规约收集 并行StreamStream API实战案例 处理集合数据文件操作数据库操作 Stream API的最佳实践常见问题与解决方案总结 什么是Stream API Stream API是Java 8引入的一种用于处理集合数据的抽象它允许以声明性方式类似SQL语句来处理数据。Stream API提供了许多强大的操作可以用来对集合进行过滤、排序、映射、规约等操作极大地简化了代码。 特点 声明性编程使用Stream API可以以声明性的方式编写代码减少样板代码。链式调用Stream API的操作可以链式调用提高代码的可读性。惰性求值中间操作是惰性求值的只有在执行终端操作时才会进行计算。并行处理支持并行处理可以充分利用多核CPU的优势。 Stream API的基础操作 创建Stream Stream API提供了多种方式来创建Stream常见的有以下几种 从集合创建 ListString list Arrays.asList(a, b, c); StreamString stream list.stream();从数组创建 String[] array {a, b, c}; StreamString stream Arrays.stream(array);使用Stream.of StreamString stream Stream.of(a, b, c);使用Stream.generate StreamDouble stream Stream.generate(Math::random).limit(10);使用Stream.iterate StreamInteger stream Stream.iterate(0, n - n 2).limit(10);中间操作 中间操作用于转换Stream是惰性求值的常见的中间操作有以下几种 filter用于过滤元素。 StreamString stream list.stream().filter(s - s.startsWith(a));map用于映射每个元素到对应的结果。 StreamString stream list.stream().map(String::toUpperCase);flatMap用于将每个元素转换为Stream然后合并成一个Stream。 StreamString stream list.stream().flatMap(s - Stream.of(s.split()));distinct用于去重。 StreamString stream list.stream().distinct();sorted用于排序。 StreamString stream list.stream().sorted();peek用于在处理过程中查看每个元素。 StreamString stream list.stream().peek(System.out::println);终端操作 终端操作用于启动Stream的计算并生成结果常见的终端操作有以下几种 forEach对每个元素执行操作。 list.stream().forEach(System.out::println);collect将Stream转换为其他形式。 ListString result list.stream().collect(Collectors.toList());reduce将Stream中的元素规约成一个值。 OptionalString result list.stream().reduce((s1, s2) - s1 s2);toArray将Stream转换为数组。 String[] array list.stream().toArray(String[]::new);count计算元素个数。 long count list.stream().count();anyMatch、allMatch、noneMatch用于匹配判断。 boolean anyMatch list.stream().anyMatch(s - s.startsWith(a)); boolean allMatch list.stream().allMatch(s - s.startsWith(a)); boolean noneMatch list.stream().noneMatch(s - s.startsWith(a));findFirst、findAny用于查找元素。 OptionalString first list.stream().findFirst(); OptionalString any list.stream().findAny();Stream API的高级操作 排序 使用sorted方法对Stream进行排序可以传入一个比较器。 ListString list Arrays.asList(b, c, a); ListString sortedList list.stream().sorted().collect(Collectors.toList()); // 逆序排序 ListString sortedListDesc list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());筛选 使用filter方法对Stream中的元素进行筛选。 ListString list Arrays.asList(a, b, c); ListString filteredList list.stream().filter(s - s.startsWith(a)).collect(Collectors.toList());映射 使用map方法对Stream中的元素进行映射。 ListString list Arrays.asList(a, b, c); ListString mappedList list.stream().map(String::toUpperCase).collect(Collectors.toList());规约 使用reduce方法对Stream中的元素进行规约。 ListString list Arrays.asList(a, b, c); String result list.stream().reduce(, (s1, s2) - s1 s2);收集 使用collect方法将Stream转换为其他形式。 ListString list Arrays.asList(a, b, c); ListString collectedList list.stream().collect(Collectors.toList()); SetString collectedSet list.stream().collect(Collectors.toSet()); String joinedString list.stream().collect(Collectors.joining(,));并行Stream 并行Stream可以充分利用多核CPU的优势提高数据处理的效率。可以使用parallelStream方法创建并行Stream。 ListString list Arrays.asList(a, b, c); ListString parallelList list.parallelStream().map(String::toUpperCase).collect(Collectors.toList());也可以使用parallel方法将普通Stream转换为并行Stream。 ListString list Arrays.asList(a, b, c); ListString parallelList list.stream().parallel().map(String::toUpperCase).collect(Collectors.toList());需要注意的是并行Stream并不是总是比串行Stream更快具体需要根据具体情况进行测试。 Stream API实战案例 处理集合数据 案例一过滤并转换集合 给定一个包含若干字符串的集合过滤掉长度小于3的字符串并将剩余字符串转换为大写。 ListString list Arrays.asList(a, ab, abc, abcd); ListString result list.stream().filter(s - s.length() 3).map(String::toUpperCase).collect(Collectors.toList()); System.out.println(result); // 输出[ABC, ABCD]案例二计算平均值 给定一个包含若干整数的集合计算所有整数的平均值。 ListInteger list Arrays.asList(1, 2, 3, 4, 5); OptionalDouble average list.stream().mapToInt(Integer::intValue).average(); average.ifPresent(System.out::println); // 输出3.0文件操作 案例三读取文件内容 使用Stream API 读取文件内容并输出到控制台。 try (StreamString lines Files.lines(Paths.get(example.txt))) {lines.forEach(System.out::println); } catch (IOException e) {e.printStackTrace(); }案例四统计单词出现次数 读取文件内容并统计每个单词出现的次数。 try (StreamString lines Files.lines(Paths.get(example.txt))) {MapString, Long wordCount lines.flatMap(line - Arrays.stream(line.split(\\W))).collect(Collectors.groupingBy(String::toLowerCase, Collectors.counting()));wordCount.forEach((word, count) - System.out.println(word : count)); } catch (IOException e) {e.printStackTrace(); }数据库操作 案例五处理数据库查询结果 假设我们有一个数据库表users包含字段id、name和age。我们可以使用Stream API处理查询结果。 ListUser users queryDatabase(); ListString names users.stream().filter(user - user.getAge() 18).map(User::getName).collect(Collectors.toList()); System.out.println(names);Stream API的最佳实践 避免不必要的并行化并行Stream并不是总是更快应该根据具体情况进行选择。合理使用中间操作和终端操作中间操作是惰性求值的只有在执行终端操作时才会进行计算。注意Stream的可复用性Stream一旦被消费就不能再使用如果需要复用可以考虑将Stream转换为集合再使用。使用合适的收集器Collectors类提供了多种收集器可以根据具体需求选择合适的收集器。处理异常在使用Stream API时需要处理可能出现的异常尤其是在文件操作和数据库操作中。 常见问题与解决方案 Stream已关闭 Stream一旦被消费就不能再使用如果需要复用可以考虑将Stream转换为集合再使用。 ListString list Arrays.asList(a, b, c); StreamString stream list.stream(); stream.forEach(System.out::println); stream.forEach(System.out::println); // 会抛出IllegalStateException性能问题 并行Stream并不是总是比串行Stream更快具体需要根据具体情况进行测试。可以使用ForkJoinPool来优化并行Stream的性能。 ForkJoinPool customThreadPool new ForkJoinPool(4); customThreadPool.submit(() -list.parallelStream().forEach(System.out::println) ).get();内存泄漏 在使用Stream API处理大数据量时需要注意内存泄漏的问题。可以使用close方法关闭Stream或者使用try-with-resources语句自动关闭Stream。 try (StreamString lines Files.lines(Paths.get(example.txt))) {lines.forEach(System.out::println); } catch (IOException e) {e.printStackTrace(); }总结 本文详细介绍了Java Stream API的使用包括基础操作、高级操作、并行处理、实战案例以及最佳实践等内容。通过合理利用Stream API开发者可以大大简化代码提高代码的可读性和可维护性同时还可以提高数据处理的效率。希望本文对你在Java开发中的Stream API使用有所帮助。 Java Stream API是处理集合数据的强大工具通过灵活运用各种操作可以实现高效的数据处理和流式计算。如果你还没有使用过Stream API建议尽快学习和掌握这一强大的工具将其应用到你的项目中提升开发效率和代码质量。
http://www.hkea.cn/news/14284883/

相关文章:

  • 做电脑桌面网站网站子目录安装dedecms导致网页布局混乱的解决方法
  • 商务服饰网站建设wordpress密码文件夹
  • 网站建设业务好跑吗网站建设 需求确认书
  • 用网盘做网站六安住房和城乡建设部网站
  • 2019做seo网站帝国cms 网站地图
  • 网站推广技巧有哪些?全网营销推广联系方式
  • 换空间网站备案政务网站建设具体指导意见
  • 企业网站建设新站销售管理系统实验报告
  • 产品做网站宣城市网站集约化建设
  • 建设工程鲁班奖公示网站合肥网站优化排名推广
  • 企业网站关键词应如何优化windows优化大师是电脑自带的吗
  • 祥网站建设wordpress百度实时推送
  • 网络公司要求做网站工商网监营销网络怎么写
  • 网站规划书500字云呼叫中心系统 免费
  • 在线做拓扑图的网站营销型网站建设流程
  • 网站前台功能聊城经济开发区人才网
  • 备案号怎么添加到网站青岛栈桥门票多少钱一张
  • 建立网站的过程工业和信息化部网站备案管理系统
  • 市工商局网站建设情况天津百度优化公司
  • 设计一个网站报价cpa项目怎么做必须有网站么
  • 怎么认证网站做网站运营工资是不是很低
  • 搜房网站要怎么 做天津有哪些好的做网站公司
  • 网站下面版权代码wordpress询盘插件
  • ppt哪个网站做的好wordpress图片验证码插件
  • 太原网站建设网站wordpress免费服务器
  • 个人网站制作体会开源 wordpress 主题
  • 零食天堂专做零食推荐的网站桂林小学网站建设
  • 贵州建设厅考试网站准考证下载中国建设银行大学助学贷款网站
  • 天猫优惠券网站怎么做的沧州做网站多少钱
  • 河南郑州建设网站长沙手机网站首页设计公司