stream api的使用(使用lambda)

stream 的獲取

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Main {
    /**
     * 數(shù)組轉(zhuǎn)流
     */
    static void gen1() {
        String[] arr = {"1", "2", "3"};
        Stream<String> stream = Stream.of(arr);
        stream.forEach(System.out::println);
    }

    /**
     * list 轉(zhuǎn)流
     */
    static void gen2() {
        List<String> list = Arrays.asList("1", "2", "3");
        Stream<String> stream = list.stream();
        stream.forEach(System.out::println);
    }

    /**
     * 用generate生成流
     */
    static void gen3() {
        Stream<Integer> stream = Stream.generate(() -> 1);
        stream.limit(10).forEach(System.out::println);
    }


    /**
     * 用iterate生成流
     */
    static void gen4() {
        Stream<Integer> stream = Stream.iterate(1, x -> x + 1);
        stream.skip(20).forEach(System.out::println);
    }

    /**
     * 從文件生成流
     *
     * @throws Exception
     */
    static void gen5() throws Exception {
        String s = "1234";
        IntStream intStream = s.chars();

        intStream.forEach(System.out::println);
        Files.lines(Paths.get("/Users/xxxxxx/src/main/java/lambda/Main.java")).forEach(System.out::println);

    }
}

上一篇文章也提到過(guò),stream的延遲操作

//沒(méi)有遇到終止操作 不執(zhí)行filter內(nèi)的代碼
Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> {
   System.out.println("不會(huì)輸出");
   return x % 2 == 0;
});
//遇到終止操作才執(zhí)行  forEach 是終止操作
Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> {
  System.out.println("輸出");
  return x % 2 == 0;
}).forEach(System.out::println);

求和

//輸出1-6偶數(shù)之和
int sum =  Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> x % 2 == 0).mapToInt(x->x).sum();
System.out.println(sum);

最大值

//輸出1-6最大值
int max =  Arrays.asList(1, 2, 3, 4, 5, 6).stream().max((a,b)->a-b).get();
System.out.println(max);

最小值

//輸出1-6最小值
int min =  Arrays.asList(1, 2, 3, 4, 5, 6).stream().min((a,b)->a-b).get();
System.out.println(min);

查找元素

/**
   * 輸出1-6 找到任何偶數(shù)元素就返回
   * findAny:查找任何一個(gè)就返回 Optional
   * findFirst:查找到第一個(gè)就返回 Optional
   * anyMatch:匹配上任何一個(gè)則返回 Boolean
   * allMatch:匹配所有的元素則返回 Boolean
   */
Optional<Integer> optional = Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> x % 2 == 0).findAny();
System.out.println(optional.get());

查找第一個(gè)元素

//輸出1-6 第一個(gè)偶數(shù)
Optional<Integer> optional = Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> x % 2 == 0).findFirst();
System.out.println(optional.get());

排序

//過(guò)濾出所有偶數(shù),再倒序
List<Integer> sortList = Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter(x -> x % 2 == 0).sorted((a, b) -> b - a).collect(Collectors.toList());
System.out.println(sortList);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容