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

制作伪装网站自助服务系统网站

制作伪装网站,自助服务系统网站,网站建设服务费进入什么科目,平面设计培训多少钱 贵吗Java的Stream流#xff1a;文件处理、排序与串并行流的全面指南 Java 8 引入了 Stream API#xff0c;这是一个用于处理集合数据的强大工具#xff0c;它提供了一种声明式的方式来进行聚合操作。Stream 不是一个数据结构#xff0c;而是一种对数据进行操作的抽象#xff…Java的Stream流文件处理、排序与串并行流的全面指南 Java 8 引入了 Stream API这是一个用于处理集合数据的强大工具它提供了一种声明式的方式来进行聚合操作。Stream 不是一个数据结构而是一种对数据进行操作的抽象允许开发者以一种更简洁、易读的方式来表达复杂的查询逻辑。下面我们将详细介绍 Java Stream 的概念、特性以及如何使用它。 1 Stream 的基本概念 Stream 是一个来自源的数据元素序列支持顺序和并行聚合操作。它可以看作是高级版本的 Iterator但是与 Iterator 不同的是Stream 操作可以链式调用从而形成一系列的操作流水线。此外Stream 的操作不会修改源数据而是生成新的结果。 1.2 Stream 的创建 创建 Stream 有多种方式 从集合创建大多数集合类都提供了 stream() 和 parallelStream() 方法来创建串行流或并行流。通过静态方法创建Stream.of() 可以接受不定数量的参数来创建流Stream.generate() 和 Stream.iterate() 可以生成无限流通常需要结合 limit() 来限制大小。从数组创建可以通过 Arrays.stream(array) 或者直接调用数组上的 stream() 方法来创建流。文件读取BufferedReader.lines() 可以将文件的每一行转换成流中的元素。正则表达式分割字符串Pattern.splitAsStream() 可以根据指定的分隔符将字符串拆分成流。 1.3 中间操作 中间操作是指那些返回另一个 Stream 的操作它们本身不会触发任何计算只有当终端操作被执行时才会真正开始处理数据。常见的中间操作包括 filter过滤掉不符合条件的元素。map对每个元素应用一个函数并返回一个新的 Stream。flatMap对每个元素应用一个函数该函数返回一个 Stream然后将所有这些 Stream 扁平化为一个单独的 Stream。distinct去除重复元素。sorted对元素排序可以选择自然排序或自定义比较器。peek对每个元素执行副作用操作如打印但不改变流的内容。 1.4 终端操作 一旦执行了终端操作Stream 就会被消耗掉不能再被使用。常见的终端操作有 forEach遍历流中的每一个元素。collect将流中的元素收集到集合中如 List 或 Set。reduce通过某种方式减少流中的元素例如求和或乘积。count统计流中元素的数量。min/max找到最小值/最大值。anyMatch/allMatch/noneMatch检查是否至少有一个/所有/没有元素满足给定的谓词。 2 基本使用示例 示例1 筛选大于等于 10 的整数 ListInteger numbers Arrays.asList(5, 10, 15, 20, 25, 30); numbers.stream().filter(num - num 10).forEach(System.out::println);这段代码会输出 10, 15, 20, 25, 30因为这些都是大于等于 10 的数字。 示例2 提取员工姓名 ListEmployee employees Arrays.asList(new Employee(Alice, 25),new Employee(Bob, 30),new Employee(Charlie, 35) ); employees.stream().map(Employee::getName).forEach(System.out::println);这里我们使用 map 操作提取了每个员工的名字并打印出来。 示例3 去重 ListInteger numbers Arrays.asList(1, 2, 3, 4, 2, 3, 5, 1, 6); numbers.stream().distinct().forEach(System.out::println);这段代码会输出 1, 2, 3, 4, 5, 6因为 distinct 操作已经移除了重复的元素。 3 文件读取与 Stream 结合 在 Java 8 中Files.lines() 方法提供了一种简单而有效的方式来逐行读取文件内容并将其转换为 Stream。这使得我们可以利用 Stream 的强大功能来处理文件中的每一行数据例如过滤、映射、排序等。下面我们将通过几个具体的示例来展示如何结合文件读取操作使用 Stream。 示例 4逐行读取文件并打印 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream;public class 读取文件示例 {public static void main(String[] args) {try (StreamString 行流 Files.lines(Paths.get(data.txt))) {行流.forEach(System.out::println);} catch (IOException e) {System.err.println(读取文件时发生错误: e.getMessage());}} }这段代码展示了如何使用 Files.lines() 方法逐行读取文件 data.txt 并打印每一行的内容。try-with-resources 语句确保了流在使用完毕后会被自动关闭避免资源泄露。 示例 5查找包含特定关键词的行 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Optional;public class 查找关键词示例 {public static void main(String[] args) {try (StreamString 行流 Files.lines(Paths.get(data.txt))) {OptionalString 包含密码的行 行流.filter(行 - 行.contains(密码)).findFirst();if (包含密码的行.isPresent()) {System.out.println(找到包含 密码 的行: 包含密码的行.get());} else {System.out.println(没有行包含 密码.);}} catch (IOException e) {System.err.println(读取文件时发生错误: e.getMessage());}} }此示例展示了如何使用 filter 和 findFirst 方法来查找文件中包含特定关键词如 “密码”的第一行并将其打印出来。如果找不到符合条件的行则输出相应的提示信息。 示例 6统计文件中单词的数量 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.regex.Pattern; import java.util.stream.Collectors;public class 统计单词数量示例 {public static void main(String[] args) throws IOException {long 单词总数 Files.lines(Paths.get(data.txt)).flatMap(Pattern.compile(\\s)::splitAsStream).count();System.out.println(总共有 单词总数 个单词);} }在这个例子中我们使用 flatMap 方法结合正则表达式来分割每一行文本从而得到一个包含所有单词的流。然后我们使用 count 方法统计总共有多少个单词。这种方法非常适合处理大文件因为它可以在不加载整个文件到内存的情况下完成任务。 示例 7按字母顺序排序并去重后的单词列表 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors;public class 排序去重单词示例 {public static void main(String[] args) throws IOException {ListString 排序后的唯一单词 Files.lines(Paths.get(data.txt)).flatMap(Pattern.compile(\\s)::splitAsStream).distinct().sorted().collect(Collectors.toList());System.out.println(按字母顺序排序并去重后的单词: 排序后的唯一单词);} }这段代码展示了如何结合 flatMap、distinct 和 sorted 方法来获取文件中按字母顺序排序且去重后的单词列表。最终结果被收集到一个 ListString 中并打印出来。这种方法可以有效地去除重复项并对结果进行排序非常适合用于文本分析等场景。 5 串行流与并行流 串行流是指所有操作都在单个线程上依次执行而并行流则是指操作可以在多个线程上并发执行。并行流可以在多核处理器上提高效率但是需要注意并不是所有的操作都适合并行化而且并行流可能会带来额外的开销。因此在选择使用串行流还是并行流时应该根据具体的应用场景做出权衡。 示例 8使用串行流计算文件中单词的总长度 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.regex.Pattern;public class 串行流计算单词总长度示例 {public static void main(String[] args) throws IOException {long 单词总长度 Files.lines(Paths.get(data.txt)).flatMap(Pattern.compile(\\s)::splitAsStream).mapToInt(String::length).sum();System.out.println(所有单词的总长度: 单词总长度);} }这段代码展示了如何使用串行流来计算文件中所有单词的总长度。flatMap 方法将每一行文本拆分为多个单词mapToInt 方法将每个单词映射为其长度最后使用 sum 方法计算所有单词长度的总和。 示例 9使用并行流计算文件中单词的总长度 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.regex.Pattern;public class 并行流计算单词总长度示例 {public static void main(String[] args) throws IOException {long 单词总长度 Files.lines(Paths.get(data.txt)).parallel() // 使用并行流.flatMap(Pattern.compile(\\s)::splitAsStream).mapToInt(String::length).sum();System.out.println(所有单词的总长度: 单词总长度);} }在这段代码中我们通过调用 parallel() 方法将串行流转换为并行流从而允许 JVM 在多核处理器上并行处理文件中的每一行。需要注意的是并行流的使用可能会导致结果的顺序发生变化但在本例中由于我们只关心单词长度的总和因此顺序不影响最终结果。 6 性能考量 虽然 Stream 提供了非常方便的操作接口但在某些情况下可能会影响性能特别是对于大规模数据集。并行流可以在多核处理器上提高效率但是需要注意并不是所有的操作都适合并行化而且并行流可能会带来额外的开销。因此在选择使用串行流还是并行流时应该根据具体的应用场景做出权衡。 7 使用 Stream 的注意事项 惰性求值Stream 的中间操作是惰性的只有遇到终端操作时才会触发实际的计算。 不可重用Stream 的一旦被消费即执行了终端操作便不能再次使用。如果需要多次操作同一组数据可以创建多个流对象。 线程安全虽然并行流可以在多线程环境中工作但这并不意味着它是线程安全的。对于非线程安全的操作仍然需要采取适当的同步措施。 总结 通过上述示例我们可以看到 Java Stream API 提供了一种简洁且强大的方式来处理集合数据。无论是文件读取、简单排序还是串行流与并行流的选择Stream 都能够帮助开发者写出更加优雅和高效的代码。然而在实际开发中我们应该根据具体的需求和数据量来决定是否使用 Stream以及选择合适的流类型以确保最佳的性能和可维护性。
文章转载自:
http://www.morning.nnqrb.cn.gov.cn.nnqrb.cn
http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn
http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn
http://www.morning.pzwfw.cn.gov.cn.pzwfw.cn
http://www.morning.drcnf.cn.gov.cn.drcnf.cn
http://www.morning.mlntx.cn.gov.cn.mlntx.cn
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn
http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn
http://www.morning.yhywr.cn.gov.cn.yhywr.cn
http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn
http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn
http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn
http://www.morning.jopebe.cn.gov.cn.jopebe.cn
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.mpngp.cn.gov.cn.mpngp.cn
http://www.morning.bpmnx.cn.gov.cn.bpmnx.cn
http://www.morning.wbysj.cn.gov.cn.wbysj.cn
http://www.morning.yrbq.cn.gov.cn.yrbq.cn
http://www.morning.sxygc.cn.gov.cn.sxygc.cn
http://www.morning.pqchr.cn.gov.cn.pqchr.cn
http://www.morning.crhd.cn.gov.cn.crhd.cn
http://www.morning.rqlqd.cn.gov.cn.rqlqd.cn
http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn
http://www.morning.tgfsr.cn.gov.cn.tgfsr.cn
http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn
http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn
http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn
http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn
http://www.morning.kqglp.cn.gov.cn.kqglp.cn
http://www.morning.lsnbx.cn.gov.cn.lsnbx.cn
http://www.morning.xqspn.cn.gov.cn.xqspn.cn
http://www.morning.ssfq.cn.gov.cn.ssfq.cn
http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn
http://www.morning.rtkz.cn.gov.cn.rtkz.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.morning.xhklb.cn.gov.cn.xhklb.cn
http://www.morning.pbmg.cn.gov.cn.pbmg.cn
http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn
http://www.morning.dtnyl.cn.gov.cn.dtnyl.cn
http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn
http://www.morning.stbhn.cn.gov.cn.stbhn.cn
http://www.morning.cywf.cn.gov.cn.cywf.cn
http://www.morning.hxwhyjh.com.gov.cn.hxwhyjh.com
http://www.morning.gdpai.com.cn.gov.cn.gdpai.com.cn
http://www.morning.plqqp.cn.gov.cn.plqqp.cn
http://www.morning.knmby.cn.gov.cn.knmby.cn
http://www.morning.glrzr.cn.gov.cn.glrzr.cn
http://www.morning.tnbas.com.gov.cn.tnbas.com
http://www.morning.lxctl.cn.gov.cn.lxctl.cn
http://www.morning.jhzct.cn.gov.cn.jhzct.cn
http://www.morning.dbjyb.cn.gov.cn.dbjyb.cn
http://www.morning.rjljb.cn.gov.cn.rjljb.cn
http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn
http://www.morning.ljcf.cn.gov.cn.ljcf.cn
http://www.morning.qggcc.cn.gov.cn.qggcc.cn
http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn
http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn
http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn
http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn
http://www.morning.rqqct.cn.gov.cn.rqqct.cn
http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn
http://www.morning.lznfl.cn.gov.cn.lznfl.cn
http://www.morning.rmryl.cn.gov.cn.rmryl.cn
http://www.morning.qrmry.cn.gov.cn.qrmry.cn
http://www.morning.hjwxm.cn.gov.cn.hjwxm.cn
http://www.morning.lpgw.cn.gov.cn.lpgw.cn
http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn
http://www.morning.dmhs.cn.gov.cn.dmhs.cn
http://www.morning.gwxsk.cn.gov.cn.gwxsk.cn
http://www.morning.dnydy.cn.gov.cn.dnydy.cn
http://www.morning.jmnfh.cn.gov.cn.jmnfh.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.rbgwj.cn.gov.cn.rbgwj.cn
http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn
http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.fqsxf.cn.gov.cn.fqsxf.cn
http://www.tj-hxxt.cn/news/260009.html

相关文章:

  • 山东省建设部继续教育网站广州加盟网站建设
  • 迅驰互联网站建设网络推广怎么样互联网设计是什么
  • 招聘 网站开发西安网站建设交易
  • 建设中心小学网站微信开发有哪些
  • 常州网站建设段新浩安徽安庆旅游必去十大景点
  • php 判断 $_get 然后跳转到相印的网站手机网站用什么程序做
  • 网站建设维护费 会计科目wordpress仿百度文库
  • 大兴58网站起名网站制作南宁网站建设哪家公司好
  • 比较好的室内设计网站wordpress 数据库文件
  • 互助网站制作公司数据库网站 建设方案
  • 基于云平台网站群建设做网站 参考文献
  • 经营网站需要什么资质企业品牌推广口号
  • 广州seo外包关键词优化易下拉效率
  • 公司做网站一定要钱吗wordpress连接微博专业版 破解
  • 专业商城网站搭建费用seo搜索引擎优化报价
  • 北京网站建设公司招聘国内猎头公司前十名
  • 哈尔滨网站建设自助建站做网站还是做业务员
  • 网站权重怎么查询淘宝联盟怎么建设网站
  • 在阿里云服务器做淘客网站免费软件加速器
  • 网站建设与应用 教案坪山网站建设行情
  • 做包子网站彩票网站开发制作
  • 网站制作培训wordpress主题 m1
  • 木材模板.网站网站建设华为
  • 赤峰做企业网站公司购物网站每个模块主要功能
  • 网站建设需要懂什么语言上国外的网站很慢
  • 网站首页动图怎么做营销师
  • 网站建设图片怎么调高端网站建设过程
  • 中国建设银行理财网站宣威做网站建设的公司
  • 网页制作公司 软件周口seo公司
  • 重庆网站推广免费软件wordpress主题设计师导航