JDK8特性之流計算

JDK8特性之流計算

1.什麼是jdk?

jdk就是我們的開發工具包,裏面有封裝好的很多類,今天講的Stream就是其中一個工具類
流非常重要,對於我們看懂別人的代碼阿,簡化計算阿,計算速度提升都有很大幫助

2.普通的數據結構集合怎麼轉換成流

Stream<Integer> stream=Stream.of(1,2,3);
ArrayList<String> list=new ArrayList<>();
list.add("你好")
Stream<Integer> stream=Stream.of(list);  //集合轉換爲流
//set和map也是一樣,map要先轉換成Collection對象

//經常用的轉換方式
list.stream();
int[] arr={1,2,3};
arr.stream();

第二種比較方便,直接簡單

3.流的API


3.1 終結方法

一旦用了下面兩個方法,那麼鏈式編程就不能再點下去了,會出異常,因爲流關閉了

list.stream().foreach(name->system.out.println(name))//遍歷輸出名字
list.stream().count();//計數

3.2 鏈式方法

list.stram().skip(2);//跳過前面2個
list.stram().skip(2).limit(1);//跳過前面2個後取新的最前面的第一個
list.stream().map((name)-> new Person(name))//轉換成一個person對象,map方法就是轉換類型的
list.stream().filter((name)-> name.length()==2)//過濾器,過濾出自己想要的結果

以上是列舉最重要的出來

3.3 完整實例

要求輸出person對象前兩個人

import java.util.ArrayList;

class Person{
    String name;
    Person(){
        this.name=null;
    }
    Person(String name){
        this.name=name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}
public class Stream {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("李白");
        list.add("張三");
        list.add("李四");
        list.add("王五");
        list.add("趙六");
      //  list.stream().forEach((name)-> System.out.println(name));
      //  list.stream().filter((String name)->{return name.startsWith("李");});
        list.stream().filter((name)-> name.length()==2).map((name)-> new Person(name)).limit(2).forEach(name-> System.out.println(name));
    }
}

多練一練,花個半小時就學會了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章