最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Stream流知識(shí)總結(jié)

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

說(shuō)明

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

遍歷

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

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

  • for循環(huán)的語(yǔ)法就是“怎么做”
  • 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("張無(wú)忌");
  list.add("周芷若");
  list.add("趙敏");
  list.add("張強(qiáng)");
  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("張無(wú)忌");
  list.add("周芷若");
  list.add("趙敏");
  list.add("張強(qiáng)");
  list.add("張三豐");

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

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

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

獲取流

  • 所有的 Collection 集合都可以通過(guò) stream 默認(rèn)方法獲取流;
  • Stream 接口的靜態(tài)方法 of 可以獲取數(shù)組對(duì)應(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 = { "張無(wú)忌", "張翠山", "張三豐", "張一元" };
	Stream<String> stream = Stream.of(array); 
}

常用方法

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

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

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

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

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

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)計(jì)個(gè)數(shù):count
數(shù)一數(shù)其中的元素個(gè)數(shù)

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

取用前幾個(gè):limit
可以對(duì)流進(jìn)行截取,只取用前n個(gè)

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

跳過(guò)前幾個(gè):skip
如果希望跳過(guò)前幾個(gè)元素

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

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

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

感謝

黑馬程序員

以及勤勞的自己

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

相關(guān)文章

  • java將html轉(zhuǎn)成圖片代碼實(shí)例(html2image)

    java將html轉(zhuǎn)成圖片代碼實(shí)例(html2image)

    這篇文章主要介紹了java將html轉(zhuǎn)成圖片的相關(guān)資料,在Java開(kāi)發(fā)中,將HTML轉(zhuǎn)換為圖片可以使用html2image庫(kù),文中通過(guò)代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 使用redisTemplate的scan方式刪除批量key問(wèn)題

    使用redisTemplate的scan方式刪除批量key問(wèn)題

    這篇文章主要介紹了使用redisTemplate的scan方式刪除批量key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java Web Fragment在項(xiàng)目中使用方法詳解

    Java Web Fragment在項(xiàng)目中使用方法詳解

    這篇文章主要介紹了Web Fragment在項(xiàng)目中使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java arrayList遍歷的四種方法及Java中ArrayList類(lèi)的用法

    java arrayList遍歷的四種方法及Java中ArrayList類(lèi)的用法

    arraylist是動(dòng)態(tài)數(shù)組,它具有三個(gè)好處分別是:動(dòng)態(tài)的增加和減少元素 、實(shí)現(xiàn)了ICollection和IList接口、靈活的設(shè)置數(shù)組的大小,本文給大家介紹java arraylist遍歷及Java arraylist 用法,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • SpringBoot實(shí)現(xiàn)配置文件加密的方案分享

    SpringBoot實(shí)現(xiàn)配置文件加密的方案分享

    項(xiàng)目的數(shù)據(jù)庫(kù)密碼、redis 密碼等明文展示在配置文件中會(huì)有潛在的風(fēng)險(xiǎn),因此采用合適的安全防護(hù)措施是有必要的,下面小編就為大家介紹一下SpringBoot中配置文件加密的方法,希望對(duì)大家有所幫助
    2023-11-11
  • Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題示例

    Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題示例

    這篇文章主要介紹了Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題,簡(jiǎn)單描述了策略模式的概念、原理,并結(jié)合實(shí)例形式分析了Java基于策略模式解決商品促銷(xiāo)問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 細(xì)數(shù)java中Long與Integer比較容易犯的錯(cuò)誤總結(jié)

    細(xì)數(shù)java中Long與Integer比較容易犯的錯(cuò)誤總結(jié)

    下面小編就為大家?guī)?lái)一篇細(xì)數(shù)java中Long與Integer比較容易犯的錯(cuò)誤總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Java8中Optional類(lèi)的使用說(shuō)明

    Java8中Optional類(lèi)的使用說(shuō)明

    Optional類(lèi)主要解決的問(wèn)題是臭名昭著的空指針異常(NullPointerException),每個(gè)Java程序員都非常了解的異常,這篇文章主要給大家介紹了關(guān)于Java8中Optional類(lèi)使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • java 遍歷MAP的幾種方法示例代碼

    java 遍歷MAP的幾種方法示例代碼

    本文主要介紹java 遍歷MAP的知識(shí)資料,這里整理幾種方法及實(shí)現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • Spring Boot整合JWT的實(shí)現(xiàn)步驟

    Spring Boot整合JWT的實(shí)現(xiàn)步驟

    本文主要介紹了Spring Boot整合JWT,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

二连浩特市| 临夏县| 平谷区| 泸水县| 桃园县| 台南市| 兖州市| 新闻| 台前县| 行唐县| 恩施市| 游戏| 如东县| 潮州市| 措勤县| 承德市| 松江区| 铁力市| 手游| 文水县| 仲巴县| 时尚| 夏邑县| 婺源县| 饶阳县| 咸宁市| 安阳市| 梅河口市| 库伦旗| 云龙县| 衡南县| 上杭县| 务川| 穆棱市| 南靖县| 都昌县| 永川市| 许昌县| 德兴市| 鹤峰县| 东源县|