美文网首页
Java8 stream练习

Java8 stream练习

作者: 莫夏_b560 | 来源:发表于2019-04-08 17:25 被阅读0次
package test;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author Jaye
 * @date 2019/4/8 15:56
 */
public class Java8Test {


    public static void main(String[] args) {
//        Comparator<Person> comparable = (p1, p2) -> p1.firstName.compareTo(p2.firstName);
//        Person p1 = new Person("John", "Doe");
//        Person p2 = new Person("Alice", "Wonderland");
//
//        int cp = comparable.compare(p1,p2);
//        System.out.println(cp); //>0


//        Optional<String> optional = Optional.of("Jw");
//        System.out.println(optional.isPresent());
//        optional.get();
//        optional.orElse("fallback");

        List<String> stringCollection = new ArrayList<>();
        stringCollection.add("ddd2");
        stringCollection.add("aaa2");
        stringCollection.add("bbb1");
        stringCollection.add("aaa1");
        stringCollection.add("bbb3");
        stringCollection.add("ccc");
        stringCollection.add("bbb2");
        stringCollection.add("ddd1");

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

        //sorted
//        stringCollection.stream().sorted((a1,a2)->a2.compareTo(a1)).forEach(System.out::println);

        //Match
//        boolean flag = stringCollection.stream().anyMatch(string -> string.startsWith("a"));
//        boolean flag1 = stringCollection.stream().allMatch(string -> string.length() > 0);
//        boolean flag2 = stringCollection.stream().noneMatch(string -> string.endsWith("GGG"));
//        System.out.println("flag:" + flag + ";flag1:" + flag1 + ";flag2:" + flag2); //flag:true;flag1:true;flag2:true

        //Map
//        stringCollection.stream().map(string->string.toCharArray()).forEach((char[] detail) -> {for (char c : detail) {
//            System.out.println(c);
//        }
//        });

//        d
//        d
//        d
//        2
//        a
//        a
//        a
//        2

        //count
//        long num = stringCollection.stream().filter(s -> s.startsWith("a") || s.startsWith("b")).count();
//        System.out.println(num);


        //reduce
//        Optional<String> optional = stringCollection.stream().reduce((s1, s2) -> new StringBuilder(s1).append("、").append(new StringBuilder(s2)).toString());
//        System.out.println(optional.get()); //ddd2、aaa2、bbb1、aaa1、bbb3、ccc、bbb2、ddd1


        //collect
        stringCollection = stringCollection.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
        Optional<String> optionalS = stringCollection.stream().reduce((s1, s2) -> s1 + "," + s2);
        System.out.println(optionalS.get());


//        map 是不支持流操作的。Map接口本身没有可用的stream()方法,
//        但是你可以根据键-值对或项通过map.keySet().stream,map.values().stream()和map.entrySet().stream()来创建指定的流。
//        Map<String, Object> map = new HashMap<>();
//        map.putIfAbsent("city", "HA");
//        map.putIfAbsent("name", "JW");

//        map.keySet().stream().forEach(key -> System.out.println(map.get(key)));
//            HA
//           JW

//        map.values().stream().forEach(System.out::println);
        //            HA
//           JW
    }


}

class Person {
    String firstName;
    String secondName;

    public Person(String firstName, String secondName) {
        this.firstName = firstName;
        this.secondName = secondName;
    }
}

相关文章

  • Java8之Stream流(六)收集

    Java8之Stream流(一)基础体验 Java8之Stream流(二)关键知识点 Java8之Stream...

  • Java 8 Stream--开发手册

    什么是Java8 Stream,为什么需要Stream? Stream是Java8一大亮点,它与 java.io ...

  • Java8 学习笔记

    @(in action系列)[java8, lambda, stream] Java8 学习 java8 能高效的...

  • Stream流

    Stream流 java8新特性 Stream定义 A sequence of elements supporti...

  • java8 stream lambda

    记录Java8的stream操作,供自己复习。 创建Stream Employee类 创建stream方法 for...

  • Java8 stream练习

  • JAVA8中Stream学习

    JAVA8中Stream学习 最近看了下Stream的api: Stream用户操作Collection族的数据,...

  • Java8 Stream 流的重用

    Java8 Stream 已经被操作或关闭 引言 在 java8 中,Stream 不能被重用,一旦它被使用或使用...

  • Java8 Stream 使用及其详解

    一、什么是Stream 二、Java7和Java8 聚合操作的区别。 三、Stream 总览 四、Stream 的...

  • Java 8 Stream 教程

    本文采用实例驱动的方式,对JAVA8的stream API进行一个深入的介绍。虽然JAVA8中的stream AP...

网友评论

      本文标题:Java8 stream练习

      本文链接:https://www.haomeiwen.com/subject/nhupiqtx.html