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

网站建设状态栏廊坊seo排名收费

网站建设状态栏,廊坊seo排名收费,电影网站建设之苹果cms程序,寻找大连网站建设Java Stream管道流是用于简化集合类元素处理的java API。 在使用的过程中分为三个阶段: 将集合、数组、或行文本文件转换为java Stream管道流管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。管道流结果…

Java Stream管道流是用于简化集合类元素处理的java API。
在使用的过程中分为三个阶段:

  • 将集合、数组、或行文本文件转换为java Stream管道流
  • 管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。
  • 管道流结果处理操作

我之前写过的一个例子:

    List<String> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur");List<String> list = nameStrs.stream().filter(s -> s.startsWith("L")).map(String::toUpperCase).sorted().collect(toList());System.out.println(list);
  • 首先使用stream()方法将字符串List转换为管道流Stream
  • 然后进行管道数据处理操作,先用fliter函数过滤所有大写L开头的字符串,然后将管道中的字符串转换为大写字母toUpperCase,然后调用sorted方法排序。这些API的用法在本号之前的文章有介绍过。其中还使用到了lambda表达式和函数引用。
  • 最后使用collect函数进行结果处理,将java Stream管道流转换为List。最终list的输出结果是:[LEMUR, LION]

1、ForEach和ForEachOrdered

如果我们只是希望将Stream管道流的处理结果打印出来,而不是进行类型转换,我们就可以使用forEach()方法或forEachOrdered()方法:

    Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").parallel().forEach(System.out::println);Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").parallel().forEachOrdered(System.out::println);
  • parallel()函数表示对管道中的元素进行并行处理,而不是串行处理,这样处理速度更快。但是这样就有可能导致管道流中后面的元素先处理,前面的元素后处理,也就是元素的顺序无法保证
  • forEachOrdered从名字上看就可以理解,虽然在数据处理顺序上可能无法保障,但是forEachOrdered方法可以在元素输出的顺序上保证与元素进入管道流的顺序一致。也就是下面的样子(forEach方法则无法保证这个顺序):
    MonkeyLionGiraffeLemurLion

2、元素的收集collect

java Stream 最常见的用法就是:一将集合类转换成管道流,二对管道流数据处理,三将管道流处理结果在转换成集合类。那么collect()方法就为我们提供了这样的功能:将管道流处理结果在转换成集合类。

转换为Set

    Set<String> collectToSet = Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion") .collect(Collectors.toSet());
  • 最终collectToSet 中的元素是:[Monkey, Lion, Giraffe, Lemur],因为Set会去重。

转换为List

    List<String> collectToList = Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").collect(Collectors.toList());

通用的转换方式

上面的元素转换方式都是专用的。比如使用Collectors.toSet()收集为Set类型集合;使用Collectors.toList()收集为List类型集合。那么,有没有一种比较通用的数据元素收集方式,将数据收集为任意的Collection接口子类型。
所以,这里介绍一种通用的元素收集方式,你可以将数据元素收集到任意的Collection类型:即向所需Collection类型提供构造函数的方式。

例如:

    LinkedList<String> collectToCollection = Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").collect(Collectors.toCollection(LinkedList::new));
  • 最终collectToCollection中的元素是: [Monkey, Lion, Giraffe, Lemur, Lion]

转换为Array

通过toArray(String[]::new)方法收集Stream的处理结果,将所有元素收集到字符串数组中。

    String[] toArray = Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion") .toArray(String[]::new);

转换为Map

使用Collectors.toMap()方法将数据元素收集到Map里面,但是出现一个问题:那就是管道中的元素是作为key,还是作为value。我们用到了一个Function.identity()方法,该方法很简单就是返回一个“ t -> t ”(输入就是输出的lambda表达式)。另外使用管道流处理函数distinct()来确保Map键值的唯一性。

    Map<String, Integer> toMap = Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").distinct().collect(Collectors.toMap(Function.identity(),   //元素输入就是输出,作为keys -> (int) s.chars().distinct().count()// 输入元素的不同的字母个数,作为value));// 最终toMap的结果是: {Monkey=6, Lion=4, Lemur=5, Giraffe=6}  

分组转换groupingBy

Collectors.groupingBy用来实现元素的分组收集,下面的代码演示如何根据首字母将不同的数据元素收集到不同的List,并封装为Map。

    Map<Character, List<String>> groupingByList =  Stream.of("Monkey", "Lion", "Giraffe", "Lemur", "Lion").collect(Collectors.groupingBy(s -> s.charAt(0) ,  //根据元素首字母分组,相同的在一组// counting()        // 加上这一行代码可以实现分组统计));// 最终groupingByList内的元素: {G=[Giraffe], L=[Lion, Lemur, Lion], M=[Monkey]}//如果加上counting() ,结果是:  {G=1, L=3, M=1}

这是该过程的说明:groupingBy第一个参数作为分组条件,第二个参数是子收集器。

3、其他常用方法

    boolean containsTwo = IntStream.of(1, 2, 3).anyMatch(i -> i == 2);// 判断管道中是否包含2,结果是: truelong nrOfAnimals = Stream.of("Monkey", "Lion", "Giraffe", "Lemur").count();// 管道中元素数据总计结果nrOfAnimals: 4int sum = IntStream.of(1, 2, 3).sum();// 管道中元素数据累加结果sum: 6OptionalDouble average = IntStream.of(1, 2, 3).average();//管道中元素数据平均值average: OptionalDouble[2.0]int max = IntStream.of(1, 2, 3).max().orElse(0);//管道中元素数据最大值max: 3IntSummaryStatistics statistics = IntStream.of(1, 2, 3).summaryStatistics();// 全面的统计结果statistics: IntSummaryStatistics{count=3, sum=6, min=1, average=2.000000, max=3}

http://www.mnyf.cn/news/16656.html

相关文章:

  • 南昌网站建设公司有哪些品牌seo推广
  • 网站建设规范布局有几部分重庆网络推广公司
  • 汉中专业网站建设开发成都网络推广运营公司
  • 贵阳市 网站建设浙江企业seo推广
  • 济南营销型网站建设公司百度关键词模拟点击软件
  • 办公室装饰设计页面关键词优化
  • 免费的网站建设一般多少钱搜索网站的浏览器
  • 网站建设的原则和目标全球网络营销公司排名
  • 做网站添加支付功能要多少钱友情链接交换平台免费
  • 网站建设武汉东莞关键词排名提升
  • 域名先解析后做网站百度快照优化排名
  • 徐州做网站需要多少钱新闻软文发稿平台
  • 腾讯云域名续费价格合肥百度seo排名
  • 房地产行业最新消息郑州seo推广优化
  • 郑州做网站哪个公司好百度搜索seo
  • 移动网站建设方案怎么制作一个网站首页
  • 花桥网站制作谷歌seo招聘
  • phpcms 手机网站后台百度推广有效果吗?
  • 今日廊坊疫情最新消息小红书seo排名规则
  • 医院诊所网站源码重庆seo和网络推广
  • 响应式网站模板百度云最新新闻事件今天疫情
  • 医院网站建设解决方案网站建设与网页设计制作
  • 咨询公司需要什么专业保定seo排名优化
  • 磐石网站seo网站内容优化关键词布局
  • 英文网站翻译怎么做呢今天刚刚最新消息2023
  • 南昌做网站比较好的公司有哪些下载班级优化大师app
  • 逐鹿网站建设广州百度网站排名优化
  • 那里有专门做印刷品的网站北京百度关键词优化
  • 咸宁网站建设哪家专业seo搜索引擎优化培训班
  • 雄安网站建设机构整站排名优化品牌