java之stream(jdk8)

一、例子

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * Created by root on 16-5-19.
 */
public class StreamTest {

    /**
     * 集合中不小于50的数输出出来[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun1(){
        int[] a = {1, 20, 63, 58, 185, 60, 59, 20};
        Arrays.stream(a).filter(x -> (x >=50)).forEach(System.out::println);
    }

    /**
     *利用stream自身属性判断下列集合是否全部大于50,[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static boolean fun2(){
        int[] a = {1, 20, 63, 58, 185, 60, 59, 20};
        return Arrays.stream(a).allMatch(p -> p > 50);
    }

    /**
     * 输出下列两个集合中的存在的相同字符串,[“qwer”,”asdf”,”zxcv”,”fgh”,”jum”,”rfv”],[“edc”,”zse”,”asdf”,”zxcv”,”yhnj”]
     */
    private static void fun3(){
        String[] s1 = {"qwer","asdf","zxcv","fgh","jum","rfv"};
        String[] s2 = {"edc","zse","asdf","zxcv","yhnj"};
        Arrays.stream(s1).forEach(x -> {
            Arrays.stream(s2).filter(y -> y.equals(x)).forEach(System.out::println);
        });
    }

    /**
     * 将下列集合中的所有数字乘以10,并得到新集合[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun4(){
        Integer[] nums = {1, 20, 63, 58, 185, 60, 59, 20};
        Integer[] num = Arrays.stream(nums).map(n -> n * 10).toArray(Integer[]::new);
        Arrays.stream(num).forEach(System.out::println);
    }

    /**
     * 取出下列集合中的第3到7个值,加上5,得到新的集合[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun5(){
        Integer[] nums = {1, 20, 63, 58, 185, 60, 59, 20};
        Integer[] num = Arrays.stream(nums).skip(2).limit(5).map(x -> x+5).toArray(Integer[]::new);
        Arrays.stream(num).forEach(System.out::println);
    }

    /**
     * 输出下列集合的最小值[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun6(){
        int[] nums = {1, 20, 63, 58, 185, 60, 59, 20};
        System.out.println(Arrays.stream(nums).min().getAsInt());
    }

    /**
     * 对下列集合进行从小到大排序[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun7(){
        int[] nums = {1, 20, 63, 58, 185, 60, 59, 20};
        Arrays.stream(nums).sorted().forEach(System.out::println);
    }

    /**
     * 集合合并:["qwe","dfg","sss"],["qwe","dfg","sss"],["qwe","dfg","sss"]
     * 合并为["qwe","dfg","sss","qwe","dfg","sss","qwe","dfg","sss"]
     */
    private static void fun8(){
        Stream<List<String>> inputStream = Stream.of(
                Arrays.asList("qwe", "dfg", "sss"),
                Arrays.asList("rty", "ghkj", "fghh"),
                Arrays.asList("gtb", "ssd", "dg")
        );
        Stream<String> outputStream = inputStream.flatMap(p -> p.stream());
        List<String> str = outputStream.collect(Collectors.toList());
        System.out.println(str);
    }

    /**
     * 取出下列集合中大于50的,并得到新的集合[1, 20, 63, 58, 185, 60, 59, 20]
     */
    private static void fun9(){
        Integer[] nums = {1, 20, 63, 58, 185, 60, 59, 20};
        Integer[] num = Arrays.stream(nums).filter(p -> p > 50).toArray(Integer[]::new);
        Arrays.stream(num).forEach(System.out::println);
    }

    /**
     * 将下列名字转换为大写,再排序输出("Fred Edwards", "Anna Cox", "Deborah Patterson", "Ruth Torres", "Shawn Powell")
     */
    private static void fun10(){
        String[] str = {"Fred Edwards", "Anna Cox", "Deborah Patterson", "Ruth Torres", "Shawn Powell"};
        Arrays.stream(str).map(p -> p.toUpperCase()).sorted().forEach(System.out::println);
    }

    public static void main(String[] args) {

        fun8();
    }

}
时间: 2024-12-21 12:17:49

java之stream(jdk8)的相关文章

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

[Java 8 Lambda] java.util.stream 简介

包结构如下所示: 这个包的结构很简单,类型也不多. BaseStream接口 所有Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些所有Stream都具备的行为. 因为继承自AutoClosable接口,所以所有的Stream类型都可以用在Java 7中引入的try-with-resource机制中,以达到自动关闭资源的目的.实际上,只有当Stream是通过Socket,Files IO等方式创建的时候,才需要关闭它.对于来自于Collections,Arrays的S

Java 8 stream try

由于工程有一个需求,什么需求? 恩,就是需要将一个iterable 在多核状态下运行.现在已有的方案是,wrapper iterable,即对Iterable进行封装,将iterable 对象作为封装类的私有成员,然后为其写一个 Synchronized method 或者 Synchronized block,实现对next()函数的唯一访问权.这里推荐 Synchronized block,因为前者会带来Dos 问题(怎么会?在文章里有说明) class A { Iterable<T> i

Java 8 Stream 用法

一.Stream是什么 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator.原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作:高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”.“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换.Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍

Java 8 Stream API具体解释

Java 8 Stream API具体解释 一.Stream API介绍 Java 8引入了全新的Stream API,此Stream与Java I/O包里的InputStream和OutputStream是全然不同的概念,它不同于StAX对XML解析的Stream,也不同于Amazon Kinesis对大数据实时处理的Stream.Stream API更像具有Iterable的集合类,但行为和集合类又有所不同,它是对集合对象功能的增强.专注于对集合对象进行各种非常便捷.高效的聚合操作或大批量数

Java 8 Stream API详解

Java 8 Stream API详解 一.Stream API介绍 Java 8引入了全新的Stream API,此Stream与Java I/O包里的InputStream和OutputStream是完全不同的概念,它不同于StAX对XML解析的Stream,也不同于Amazon Kinesis对大数据实时处理的Stream.Stream API更像具有Iterable的集合类,但行为和集合类又有所不同,它是对集合对象功能的增强,专注于对集合对象进行各种非常便捷.高效的聚合操作或大批量数据操

Java IO Stream

ref: http://www.studytonight.com/java/java-io-stream.php IO Stream Java performs I/O through Streams. A stream is linked to physical layer by java I/O system to make input and output operation in java. In general, a stream means continuous flow of da

Java流(Stream)、文件(File)和IO

Java流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本节讲述最基本的和流与I/O相关的功能.我们将通过一个个例子来学习这些功能. 读取控制台输入 Jav

[Java 8 Lambda] java.util.stream 简单介绍

包结构例如以下所看到的: 这个包的结构非常easy,类型也不多. BaseStream接口 全部Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些全部Stream都具备的行为. 由于继承自AutoClosable接口,所以全部的Stream类型都能够用在Java 7中引入的try-with-resource机制中,以达到自己主动关闭资源的目的.实际上,仅仅有当Stream是通过Socket,Files IO等方式创建的时候,才须要关闭它.对于来自于Collection