欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Stream流知識總結(jié)

 更新時間:2020年06月16日 15:55:34   作者:歸子莫  
這篇文章主要介紹了Java Stream流的相關(guān)知識,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

說明

在Java 8中,得益于Lambda所帶來的函數(shù)式編程,引入了一個全新的Stream概念,用于解決已有集合類庫既有的弊端

遍歷

傳統(tǒng)集合在于使用循環(huán)遍歷

Java 8的Lambda讓我們可以更加專注于做什么(What),而不是怎么做(How),這點此前已經(jīng)結(jié)合內(nèi)部類進行 了對比說明。現(xiàn)在,我們仔細體會一下上例代碼,可以發(fā)現(xiàn):

  • for循環(huán)的語法就是“怎么做”
  • for循環(huán)的循環(huán)體才是“做什么”

傳統(tǒng)集合遍歷

import java.util.ArrayList;
import java.util.List;

/**
 * @author tanglei
 * @date 2020/6/10 10:21 下午
 */
public class NormalFilter {
 public static void main(String[] args) {
  List<String> list = new ArrayList<>();
  list.add("張無忌");
  list.add("周芷若");
  list.add("趙敏");
  list.add("張強");
  list.add("張三豐");

  List<String> zhangList = new ArrayList<>();
  for(String name : list){
   if(name.startsWith("張")){
    zhangList.add(name);
   }
  }

  List<String> shortList = new ArrayList<>();
  for(String name : zhangList){
   if(name.length() == 3){
    shortList.add(name);
   }
  }

  for (String name : shortList){
   System.out.println(name);
  }
 }
}


Stream的優(yōu)雅

import java.util.ArrayList;
import java.util.List;

/**
 * @author tanglei
 * @date 2020/6/10 10:28 下午
 */
public class StreamFilter {
 public static void main(String[] args) {
  List<String> list = new ArrayList<>();
  list.add("張無忌");
  list.add("周芷若");
  list.add("趙敏");
  list.add("張強");
  list.add("張三豐");

  list.stream()
    .filter(s -> s.startsWith("張"))
    .filter(s -> s.length() == 3)
    .forEach(System.out::println);
 }
}

Stream的優(yōu)雅使用stream可以十分簡單明了的體現(xiàn)代碼的邏輯

“Stream流”其實是一個集合元素的函數(shù)模型,它并不是集合,也不是數(shù)據(jù)結(jié)構(gòu),其本身并不存儲任何 元素(或其地址值

獲取流

  • 所有的 Collection 集合都可以通過 stream 默認方法獲取流;
  • Stream 接口的靜態(tài)方法 of 可以獲取數(shù)組對應(yīng)的流。

根據(jù)Collection獲取流

public static void main(String[] args) {
	List<String> list = new ArrayList<>();
	Stream<String> stream1 = list.stream();
	Set<String> set = new HashSet<>();
	Stream<String> stream2 = set.stream();
	Vector<String> vector = new Vector<>();
}

根據(jù)Map獲取流

public static void main(String[] args) {
	Map<String, String> map = new HashMap<>();
	Stream<String> keyStream = map.keySet().stream();
	Stream<String> valueStream = map.values().stream(); 	Stream<Map.Entry<String, String>> entryStream = 		map.entrySet().stream();
}

根據(jù)數(shù)組獲取流

public static void main(String[] args) {
	String[] array = { "張無忌", "張翠山", "張三豐", "張一元" };
	Stream<String> stream = Stream.of(array); 
}

常用方法

逐一處理:forEach
會將每一個流元素交給該函數(shù)進行處理

public static void main(String[] args) {
	Stream<String> stream = Stream.of("張無忌", "張三豐", "周芷若");
	stream.forEach(name‐> System.out.println(name)); 
}

過濾:filter
可以通過 filter 方法將一個流轉(zhuǎn)換成另一個子集流

public static void main(String[] args) {
	Stream<String> original = Stream.of("張無忌", "張三豐", "周芷若");
	Stream<String> result = original.filter(s ‐> 	s.startsWith("張")); 
}

映射:map
如果需要將流中的元素映射到另一個流中

public static void main(String[] args) {
	Stream<String> original = Stream.of("10", "12", "18");
	Stream<Integer> result = original.map(str‐>Integer.parseInt(str)); 
}

統(tǒng)計個數(shù):count
數(shù)一數(shù)其中的元素個數(shù)

public static void main(String[] args) {
	Stream<String> original = Stream.of("張無忌", "張三豐", "周芷若"); 
 Stream<String> result = original.filter(s ‐> s.startsWith("張"));
 System.out.println(result.count()); // 2
}

取用前幾個:limit
可以對流進行截取,只取用前n個

public static void main(String[] args) {
	Stream<String> original = Stream.of("張無忌", "張三豐", "周芷若"); 
 Stream<String> result = original.limit(2); 	
 System.out.println(result.count()); // 2
}

跳過前幾個:skip
如果希望跳過前幾個元素

public static void main(String[] args) {
	Stream<String> original = Stream.of("張無忌", "張三豐", "周芷若"); 
 Stream<String> result = original.skip(2); 
 System.out.println(result.count()); // 1
}

組合:concat
如果有兩個流,希望合并成為一個流

public static void main(String[] args) {
	Stream<String> streamA = Stream.of("張無忌"); 	
 Stream<String> streamB = Stream.of("張翠山"); 
 Stream<String> result = Stream.concat(streamA, streamB);
}

感謝

黑馬程序員

以及勤勞的自己

以上就是Java Stream流知識總結(jié)的詳細內(nèi)容,更多關(guān)于Java Stream流的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論