JAVA8之Stream

一 Stream是什麼
從名字來看,Stream就是一個流,他的主要作用就是對集合數據進行查找過濾等操作。有點類似於SQL的數據庫操作。一句話來解釋就是一種高效且易用的數據處理方式。大數據領域也有一個Steam實時流計算框架,不過和這個可不一樣。別搞混了。

舉個例子吧,比如說有一個集合Student數據,我們要刪選出學生名字爲“張三”的學生,或者是找出所有年齡大於18歲的所有學生。此時我們就可以直接使用Stream來篩選。當然了這只是給出了其中一個例子。Stream還有很多其他的功能。

Stream和Collection的區別就是:Collection只是負責存儲數據,不對數據做其他處理,主要是和內存打交道。但是Stream主要是負責計算數據的,主要是和CPU打交道。現在明白了吧。
二、Stream語法講解

Stream執行流程很簡單,主要有三個,首先創建一個Stream,然後使用Stream操作數據,最後終止Stream。有點類似於Stream的生命週期。下面我們根據其流程來一個一個講解。

1、前提準備

首先我們創建一個Student類,以後我們每次都是操作這個類
public class Student {
private Integer id;
private String name;
private Integer age;
private Double score;

public Student() {}

public Student(Integer id, String name, Integer age, Double score) {
super();
this.id = id;
this.name = name;
this.age = age;
this.score = score;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Double getScore() {
return score;
}

public void setScore(Double score) {
this.score = score;
}

@Override
public String toString() {
return “Student [id=” + id + “, name=” + name + “, age=” + age + “, score=” + score + “]”;
}

}
1.2 用於獲取數據
public class StudentData {
public static List getStudent(){
ArrayList list = new ArrayList<>();
list.add(new Student(1,“劉備”,18,90.4));
list.add(new Student(2,“張飛”,19,80.4));
list.add(new Student(3,“關羽”,20,70.4));
list.add(new Student(4,“馬超”,21,60.4));
return list;
}
}
2 創建一個Stream
方式一:通過一個集合創建stream
List student = StudentData.getStudent();
//第一種:返回一個順序流
Stream stream = student.stream();
System.out.println(stream);
//第二種
Stream stream2 = student.parallelStream();
System.out.println(stream2);
在這裏插入圖片描述
方式二:通過一個數組創建Stream
在這裏插入圖片描述
方式三:通過Stream.of
在這裏插入圖片描述
方式四:創建一個無限流
在這裏插入圖片描述
3、使用Stream操作數據

操作1:篩選和切片
在這裏插入圖片描述
操作2:映射

在這裏插入圖片描述
操作3:排序
在這裏插入圖片描述
4、終止Stream

操作1:匹配和查找
在這裏插入圖片描述
操作2:歸約
在這裏插入圖片描述
操作3:收集
在這裏插入圖片描述
stream基本的語法就是這樣,你會發現Stream就像是一個工具一樣,可以幫我們分析處理數據,極其的好用,但是目前還不知道其效率如何。根據網上一位大佬的內存時間分析,其實在數據量比較龐大的時候,Stream可以爲我們節省大量的時間,數據量小的時候並不明顯。
總結:
Stream的作用:
1.篩選和切片
2 映射
3 排序
4 中止Stream

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