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));
}
}
多練一練,花個半小時就學會了