java之stream(jdk8)


一、stream介紹

參考:

Java 8 中的 Streams API 詳解
 
Package java.util.stream
 
Java8初體驗(二)Stream語法詳解
 

二、例子

import java.util.ArrayList;
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() {
        String[] str1 = {"qwe", "dfg", "sss"};
        String[] str2 = {"rty", "ghkj", "fghh"};
        String[] str3 = {"gtb", "ssd", "dg"};
        ArrayList<String> results = new ArrayList<>();
        Stream.of(str1, str2, str3).forEach(p -> {
            Stream.of(p).forEach(x -> results.add(x));
        });
        results.stream().forEach(System.out::println);
    }

    /**
     * 取出下列集合中大於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();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM