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

购买一级域名做网站正定网站建设

购买一级域名做网站,正定网站建设,网站备案号被收回,摄影创意网站Java 8 引入了 Stream API#xff0c;使得处理集合数据变得更加简洁和高效。Stream API 允许开发者以声明式编程风格操作数据集合#xff0c;而不是使用传统的迭代和条件语句。 一、基本概念 1.1 什么是 Stream Stream 是 Java 8 中的一个新抽象#xff0c;它允许对集合数…Java 8 引入了 Stream API使得处理集合数据变得更加简洁和高效。Stream API 允许开发者以声明式编程风格操作数据集合而不是使用传统的迭代和条件语句。 一、基本概念 1.1 什么是 Stream Stream 是 Java 8 中的一个新抽象它允许对集合数据执行各种复杂的操作例如过滤、映射、规约、收集等。Stream 不存储数据而是从集合或其他数据源如数组、I/O channel 等中获取数据并进行操作。 Stream 的主要特点包括 无存储Stream 不存储数据只是对数据进行操作。函数式编程使用 lambda 表达式进行操作使代码更简洁。延迟执行Stream 操作是懒加载的只有在需要结果时才会执行。可组合性多个 Stream 操作可以连成一串操作链形成一系列的转换。 1.2 Stream 的生命周期 Stream 的操作可以分为三类 源创建 Stream 的数据源例如集合、数组或 I/O channel。中间操作返回新的 Stream 的操作例如过滤、映射。终端操作产生结果或副作用的操作例如收集、计算。 一个 Stream 的生命周期可以简单描述为 创建 Stream。中间操作。终端操作。 二、Stream API 的基本操作 2.1 创建 Stream Stream 可以通过以下几种方式创建 从集合 ListString list Arrays.asList(a, b, c); StreamString stream list.stream();从数组 String[] array {a, b, c}; StreamString stream Arrays.stream(array);从值 StreamString stream Stream.of(a, b, c);从文件 StreamString stream Files.lines(Paths.get(path/to/file.txt));2.2 中间操作 中间操作返回一个新的 Stream它们是延迟执行的只有在终端操作执行时才会实际进行计算。常用的中间操作包括 2.2.1 filter filter 用于对 Stream 中的元素进行过滤只保留满足条件的元素。 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); StreamInteger evenNumbers numbers.stream().filter(n - n % 2 0);2.2.2 map map 用于将 Stream 中的每个元素映射到另一个元素。 ListString words Arrays.asList(Java, Stream, API); StreamInteger wordLengths words.stream().map(String::length);2.2.3 flatMap flatMap 用于将 Stream 中的每个元素映射到一个新的 Stream并将这些新 Stream 合并成一个 Stream。 ListListString listOfLists Arrays.asList(Arrays.asList(a, b), Arrays.asList(c, d)); StreamString flatStream listOfLists.stream().flatMap(Collection::stream);2.2.4 distinct distinct 用于去除 Stream 中的重复元素。 ListInteger numbers Arrays.asList(1, 2, 2, 3, 4, 4, 5); StreamInteger distinctNumbers numbers.stream().distinct();2.2.5 sorted sorted 用于对 Stream 中的元素进行排序可以传递一个比较器。 ListString words Arrays.asList(Java, Stream, API); StreamString sortedWords words.stream().sorted();2.3 终端操作 终端操作会触发 Stream 的计算并生成结果或副作用。常用的终端操作包括 2.3.1 forEach forEach 用于对 Stream 中的每个元素执行一个动作。 ListString words Arrays.asList(Java, Stream, API); words.stream().forEach(System.out::println);2.3.2 toArray toArray 用于将 Stream 中的元素收集到一个数组中。 ListString words Arrays.asList(Java, Stream, API); String[] array words.stream().toArray(String[]::new);2.3.3 reduce reduce 用于将 Stream 中的元素通过一个关联函数组合起来生成一个值。 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); int sum numbers.stream().reduce(0, Integer::sum);2.3.4 collect collect 用于将 Stream 中的元素收集到一个容器中例如 List、Set 或 Map。 ListString words Arrays.asList(Java, Stream, API); ListString upperCaseWords words.stream().map(String::toUpperCase).collect(Collectors.toList());2.3.5 count count 用于返回 Stream 中的元素数量。 ListString words Arrays.asList(Java, Stream, API); long count words.stream().count();2.3.6 findFirst 和 findAny findFirst 用于返回 Stream 中的第一个元素如果存在。 ListString words Arrays.asList(Java, Stream, API); OptionalString first words.stream().findFirst();findAny 用于返回 Stream 中的任意一个元素如果存在常用于并行流。 ListString words Arrays.asList(Java, Stream, API); OptionalString any words.stream().findAny();2.3.7 anyMatch、allMatch 和 noneMatch 这三个操作用于检查 Stream 中是否有任意、所有或没有元素满足指定的条件。 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); boolean anyEven numbers.stream().anyMatch(n - n % 2 0); boolean allEven numbers.stream().allMatch(n - n % 2 0); boolean noneNegative numbers.stream().noneMatch(n - n 0);三、并行流 Java 8 提供了并行流可以充分利用多核处理器的优势。只需调用 parallelStream 方法即可创建一个并行流。 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); int sum numbers.parallelStream().reduce(0, Integer::sum);并行流通过将数据分成多个子流并在不同的 CPU 核心上并行处理这些子流然后再合并结果来提高处理速度。需要注意的是并行流适合于无状态和无副作用的操作使用时需小心处理共享变量和同步问题。 四、Stream API 的最佳实践 4.1 使用 Lambda 表达式 Stream API 通常与 lambda 表达式一起使用使代码更加简洁和易读。例如 ListString words Arrays.asList(Java, Stream, API); ListString upperCaseWords words.stream().map(word - word.toUpperCase()).collect(Collectors.toList());4.2 避免使用修改状态的中间操作 Stream 操作应该是无副作用的即不应修改外部状态。以下示例展示了一个错误的用法 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); ListInteger results new ArrayList(); numbers.stream().forEach(n - results.add(n * 2)); // 这样做是错误的正确的做法是使用终端操作 collect ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); ListInteger results numbers.stream().map(n - n * 2).collect(Collectors.toList());4.3 利用方法引用 方法引用可以使代码更加简洁。例如使用方法引用替代 lambda 表达式 ListString words Arrays.asList(Java, Stream, API); ListString upperCaseWords words.stream().map(String::toUpperCase).collect(Collectors.toList());4.4 避免使用并行流进行小任务 并行流在处理大量数据或复杂计算时非常高效但对于小任务启动并行计算的开销可能会大于收益。因此在数据量较小或计算较简单的情况下优先使用顺序流。 4.5 避免在终端操作之前调用 findAny 在终端操作之前调用 findAny 会导致流的中间操作链被截断进而无法正确执行后续的操作。例如 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); OptionalInteger result numbers.stream().filter(n - n % 2 0).findAny(); // 这样做会中断流应将 findAny 用作终端操作 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); OptionalInteger result numbers.stream().filter(n - n % 2 0).findAny();4.6 使用 collect 进行结果收集 collect 是一个强大的终端操作可以将流中的元素收集到各种容器中。例如收集到 List ListString words Arrays.asList(Java, Stream, API); ListString wordList words.stream().collect(Collectors.toList());4.7 使用 Collectors 进行复杂收集操作 Collectors 提供了多种收集器可以进行复杂的结果收集。例如收集到 Map ListString words Arrays.asList(Java, Stream, API); MapInteger, ListString wordLengthMap words.stream().collect(Collectors.groupingBy(String::length));4.8 使用 Optional 处理可能的空值 Stream API 中的某些终端操作会返回 Optional例如 findFirst、findAny。使用 Optional 可以避免空指针异常 ListString words Arrays.asList(Java, Stream, API); OptionalString firstWord words.stream().findFirst(); firstWord.ifPresent(System.out::println);Java 8 的 Stream API 为集合数据的处理提供了一种高效、简洁的方式。通过理解和掌握 Stream 的基本概念、常用操作以及最佳实践可以大大提高 Java 开发的生产力和代码质量。 Stream API 不仅支持顺序流还支持并行流使得在多核环境下处理大量数据变得更加高效。在实际开发中合理使用 Stream API 可以显著提升代码的可读性和稳定性。 黑马程序员免费预约咨询
http://www.w-s-a.com/news/783014/

相关文章:

  • 网站策划怎么做内容旅游型网站建设
  • 东莞百度网站推广ppt模板免费下载的网站
  • 网站建设项目管理基本要求网站空间到期影响
  • 做奖杯的企业网站谁有推荐的网址
  • wordpress能做企业站吗wordpress收发邮件
  • 电子产品网站建设策划方案腾讯企业邮箱注册申请免费
  • 哪些网站可以免费做代码自己电脑做网站服务器广域网访问
  • 高端网站设计青海省教育厅门户网站学籍查询
  • 长春网站优化公司网站制作400哪家好
  • 县级门户网站建设的报告开发游戏的软件有哪些
  • 做电子商务的网站wordpress带会员中心
  • 网站域名不变网站可以从做吗网站建设步骤 文档
  • 网站建设中 gif互联网新项目在哪里找
  • 做外包网站猎头公司英文
  • 房屋结构自建设计 网站海淀教育互动平台
  • 网络营销比赛 营销型网站策划热门搜索关键词
  • 网站建设图片代码网络设计师工资
  • 福建网站开发适合交换友情链接的是
  • 企业门户网站建站内乡微网站开发
  • 在线做logo印章网站一般到哪个网站找数据库
  • 哪些网站做免费送东西的广告6郑州人流医院哪家好
  • 高端做网站哪家好sem技术培训
  • 网站做等保是按照什么定级别的做网站的资源哪里找
  • 免费建站网页无需登陆潍坊高端模板建站
  • 北京php网站建设软通动力外包值得去吗
  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好