java8中的Stream

Collection.stream() / parallelStream()

1. Stream

1)Filter

stringCollection .stream().filter((s) -> s.startsWith("a")) .forEach(System.out::println);

2)Sorted

stringCollection .stream().sorted()

3)Map

stringCollection .stream().map(String::toUpperCase) .sorted((a, b) -> b.compareTo(a))

4)Matches

boolean anyStartsWithA = stringCollection.stream().anyMatch((s) -> s.startsWith("a"));

boolean allStartsWithA = stringCollection.stream().allMatch((s) -> s.startsWith("a"));

boolean noneStartsWithZ = stringCollection.stream().noneMatch((s) -> s.startsWith("z"));

5)Count

long startsWithB = stringCollection.stream().filter((s) -> s.startsWith("b")) .count();

6)Reduce

stringCollection .stream().sorted().reduce((s1, s2) -> s1 + "#" + s2);

2. Parallel stream

1) sorted

long t0 = System.nanoTime();

long count = values.parallelStream().sorted().count(); System.out.println(count);

long t1 = System.nanoTime();

long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0); System.out.println(String.format("parallel sort took: %d ms", millis)); // parallel sort took: 472 ms

2) MAP

Map<Integer, String> map = new HashMap<>();

for (int i = 0; i < 10; i++) { map.putIfAbsent(i, "val" + i);}

map.forEach((id, val) -> System.out.println(val));

map.computeIfPresent(3, (num, val) -> val + num); map.get(3); // val33

map.computeIfPresent(9, (num, val) -> null); map.containsKey(9); // false

map.computeIfAbsent(23, num -> "val" + num); map.containsKey(23); // true

map.computeIfAbsent(3, num -> "bam"); map.get(3); // val33

map.getOrDefault(42, "not found"); // not found 

map.merge(9, "val9", (value, newValue) -> value.concat(newValue)); map.get(9); // val9

map.merge(9, "concat", (value, newValue) -> value.concat(newValue)); map.get(9); // val9concat 

时间: 2024-08-23 07:47:58

java8中的Stream的相关文章

Java8中Stream的归约与收集

Java8中Stream的归约与收集 归约 reduce(T identity, BinaryOperator) / reduce(BinaryOperator) --可以将流中元素反复结合起来,得到一个值 public class Employee { private String name; private Integer age; private Double salary; private Status status; public Employee() { super(); } pub

Java8中聚合操作collect、reduce方法详解

Stream的基本概念 Stream和集合的区别: Stream不会自己存储元素.元素储存在底层集合或者根据需要产生.Stream操作符不会改变源对象.相反,它会返回一个持有结果的新的Stream.3.Stream操作可能是延迟执行的,这意味着它们会等到需要结果的时候才执行.Stream操作的基本过程,可以归结为3个部分: 创建一个Stream.在一个或者多个操作中,将指定的Stream转换为另一个Stream的中间操作.通过终止(terminal)方法来产生一个结果.该操作会强制它之前的延时操

java8 中的时间和数据的变化

java8除了lambda表达式之外还对时间和数组这两块常用API做想应调整, Stream 有几个常用函数: store 排序 (a,b)-> a.compareTo(b)  排出来的结果是正序,从小到大 如果(a,b)->b.compareTo(a) 排出来的结果是从大到小 filter 拦截,过滤.根据条件过滤 forEeach 迭代每个元素 map 变更或者替换 limit 长度或者符合数量的限制 skip 跳到某个开始点,skip和limit组合可以制造分页的效果 sum ,coun

Java8 中的Optional类详解

在Java8中,引入了一个新的类java.util.Optional .这个类专门用来解决空引用的问题.有了它,对于一个方法的返回值什么的,都不需要再判断是不是null了.同时,这个类和lambda表达式和函数式编程也可以比较好的整合在一起使用. 这里就来看一下这个类的使用. 知道Scala的同学可以类比一下 scala.Option[T] ,或者Haskell的Data.Maybe.都有类似的功能. Optional是一个容器,里面放着我们的返回值(就是真正要用的东西),但是这个真正要用的东西

java 8 中的stream

Java 8 中的 Streams 详解 Java 8 是迄今为止在语义上改动上最大的一个平台.除了最显著的 Lambda 表达式之外,还有很多初次见面的特性,例如本文主题的 Streams API.这里介绍了它出现的背景和具体用法. 为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesi

java8 新特性 Stream

1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的Iterator.原始版本的Iterator,用户只能一个一

java中的Stream流

java中的Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带 来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端. 一.引言 传统集合的多步遍历代码 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作.而当我们需要对集合中的元 素进行操作的时候,除了必需的添加.删除.获取外,典型的就是集合遍历.

Java8中Lambda表达式详解

对于任何场景而言,代码量永远都是越少越好,而Java8中提供的Lambda表达式正式简化代码的利器. 参考博客:Java 8 Lambda 表达式详解 参考博客:完美的lambda表达式只有一行 在 Java 8 以前,若我们想要把某些功能传递给某些方法,总要去写匿名类. manager.addScheduleListener(new ScheduleListener() { @Override public void onSchedule(ScheduleEvent e) { // Event

Java8 新特性 Stream 无状态中间操作

无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 filter 映射 map 扁夹化 flatMap 遍厉 peek 过滤 filter 接收一个谓词断言,boolean Pridicate< T > 根据返回值类型来确定是否过滤这一条属性. // 过滤 filter @Test public void filterTest() { list.stre