java8 好用特性

Stream

1.Stream(流)是一个来自数据源的元素队列并支持聚合操作

2.数据源 流的来源。 可以是集合,数组

6.map(item->item.touppercase()) :使用给定的转换函数进行转换操作,新生成的Stream只包含转换生成的元素。

  • 已封装好了,三种变形:mapToDouble,mapToInt,mapToLong
  • flatMap(integer -> Stream.of(integer * 10))
    该换转函数的对象是一个Stream,也不会再创建一个新的Stream,而是将原Stream的元素取代为转换的Stream
    flatMapToInt,flatMapToLong和flatMapToDouble。

 

filter(item->item>3):原Stream按照指定条件过滤,在新建的Stream中,只包含满足条件的元素,将不满足条件的元素过滤掉。

distinct():去重取第一个,生成的新Stream中没有没有重复的元素

sorted:sorted方法将对原Stream进行排序,返回一个有序列的新Stream。

  • sorterd有两种变体sorted(),sorted(Comparator)

peek(aa->Sysetem.out.println("aaa")):生成一个包含原Stream的所有元素的新Stream,同时会提供一个消费函数(Consumer实例),新Stream每个元素被消费的时候都会执行给定的消费函数,并且消费函数优先执行

skip(2):将过滤掉原Stream中的前N个元素

、 parallel、 sequential、 unordered

forEach, forEachOrdered(排序后输出)

、 toArray、 reduce、

collect:是收集器,将传入的流的数据结构进行转换,

  • Collectors:工具库,在该库中封装了相应的转换方法 
  • Collectors.toList()
  • Collectors.toSet()
  • Collectors.toCollection(LinkedList::new)
  • Collectors.joining(" | "),字符串拼接
  • Map<Boolean, List<String>> result = list.stream().collect(partitioningBy(s -> s.length() > 2));
  • Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf);收集后继续处理
  • summarizingInt/summarizingLong/summarizingDouble

    • 用于对Stream中的数值对象生成统计信息,返回值类型比如针对int的IntSummaryStatistics
      • Collectors.summarizingInt(input -> input.getSum())
      • IntSummaryStatistics collect = topics.stream().map(t -> t.getName().length() + 2).collect(Collectors.summarizingInt(value -> value));
        topicLenth = (double) collect.getSum();

 

min(取第一个)、 max(取最后一个)返回optional,先排序,再取值

  • max((o1,o2)->o1-o2)

count():返回集合中元素个数

anyMatch:有一个匹配返回true

allMatch:都匹配则返回true

noneMatch:都不满足则返回true

findFirst:获取含有Stream中的第一个元素的Optional,如果Stream为空,则返回一个空的Optional。若Stream并未排序,可能返回含有Stream中任意元素的Optional

 findAny:返回optinal,取任意一个

limit:截取前几个

concat:将两个Stream连接在一起

7.创建方式

  • Collection接口和数组的默认方法
  • 集合.stream()
  • Stream接口的静态工厂方法
Stream<Integer> integerStream = Stream.of(1, 2, 3);
Stream<String> stringStream = Stream.of("A");
  • Random.ints()
  • BitSet.stream()
  • Pattern.splitAsStream(java.lang.CharSequence)
  • JarFile.stream()

stream() − 为集合创建串行流。

parallelStream() − 为集合创建并行流。是流并行处理程序的代替方法

String.join

String.join(分隔符,一个可iterator的集合list/set);返回一个拼接的字符串

内部使用StringBuilder实现。

Optional

主要解决的问题是臭名昭著的空指针异常

Optional 类既可以含有对象也可以为空,是一个包装类

  • of(Object):创建Option的静态方法,为空报错
  • ofNullable(xx):创建Option的静态方法,允许传入空
  • isPresent(可选消费函数):是否为空
  • orElse():有值则返回该值(括号内会执行不返回),否则返回传递给它的参数值
  • orElseGet() :功能类似,但是括号内不执行
  • orElseThrow(() -> new IllegalArgumentException()):它会在对象为空的时候抛出异常,而不是返回备选的值
  • 可以执行stream流
  • Java 9 为 Optional 类添加了三个方法:or()ifPresentOrElse() 和 stream()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值