Java8中List新特性:Stream和Lambda表達式

一、什麼是Stream和Lambda表達式

在Java8之前,我們需要遍歷一個List的元素,通常要用for循環,然後對List中每個元素進行相應的操作。而在Java8中引入了Stream和Lambda表達式的概念,使得我們可以更加便捷地完成這些操作。

Stream是Java8新增的一個API,它允許我們對一個元素序列進行各種操作,比如篩選、排序、映射等等。而Lambda表達式則是一種匿名函數,它可以代替Java中的匿名內部類,並提供了更加簡潔高效的操作。

放在List上,我們可以通過Stream和Lambda表達式來完成一些常見的操作,比如對List進行過濾、映射和排序。

二、Stream的常見用法

1. 過濾


List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
System.out.println(filteredList);

代碼中首先創建了一個字符串List,然後使用Stream的filter方法來過濾以a開頭的字符串,並通過collect方法將結果轉換成List類型。

2. 映射


List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
List<Integer> lengthList = list.stream().map(String::length).collect(Collectors.toList());
System.out.println(lengthList);

代碼中首先創建了一個字符串List,然後使用Stream的map方法來將每個字符串映射成它的長度,並通過collect方法將結果轉換成List類型。

3. 排序


List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
List<String> sortedList = list.stream().sorted().collect(Collectors.toList());
System.out.println(sortedList);

代碼中首先創建了一個字符串List,然後使用Stream的sorted方法來對List中的元素進行排序,最後通過collect方法將結果轉換成List類型。

三、Lambda表達式的常見用法

1. forEach


List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
list.forEach(s -> System.out.println(s));

代碼中首先創建了一個字符串List,然後使用forEach方法和Lambda表達式來遍歷List中的元素,並在控制台上打印出來。

2. reduce


List<Integer> list = Arrays.asList(1, 2, 3, 4);
int sum = list.stream().reduce(0, (a, b) -> a + b);
System.out.println(sum);

代碼中首先創建了一個整數List,然後使用reduce方法和Lambda表達式來對List中的元素進行累計求和,並將結果輸出。

3. Predicate


List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
Predicate<String> predicate = s -> s.startsWith("a");
List<String> filteredList = list.stream().filter(predicate).collect(Collectors.toList());
System.out.println(filteredList);

代碼中首先創建了一個字符串List,然後使用Predicate和Stream的filter方法來篩選以a開頭的字符串,並通過collect方法將結果轉換成List類型。

四、總結

Stream和Lambda表達式是Java8中的重要特性,它們能夠使我們更加輕鬆地完成一些常見的操作,比如List的過濾、映射和排序。通過掌握這些用法,我們可以讓我們的代碼變得更加簡潔、高效。

原創文章,作者:RJPO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/132022.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RJPO的頭像RJPO
上一篇 2024-10-03 23:49
下一篇 2024-10-03 23:49

相關推薦

  • Tensor to List的使用

    Tensor to List是TensorFlow框架提供的一個非常有用的函數,在很多的深度學習模型中都會用到。它的主要功能是將TensorFlow中的張量(Tensor)轉換為P…

    編程 2025-04-29
  • 如何使用Python將輸出值賦值給List

    對標題進行精確、簡明的解答:本文將從多個方面詳細介紹Python如何將輸出的值賦值給List。我們將分步驟進行探討,以便讀者更好地理解。 一、變量類型 在介紹如何將輸出的值賦值給L…

    編程 2025-04-28
  • 如何使用integratecustomerdata.stream().filter(c->{ if (collectionutil.isnotempty(

    本文將詳細介紹如何在Java編程中使用integratecustomerdata.stream().filter(c->{ if (collectionutil.isnote…

    編程 2025-04-28
  • Python List查找用法介紹

    在Python中,list是最常用的數據結構之一。在很多場景中,我們需要對list進行查找、篩選等操作。本文將從多個方面對Python List的查找方法進行詳細的闡述,包括基本查…

    編程 2025-04-28
  • Python DataFrame轉List用法介紹

    Python中常用的數據結構之一為DataFrame,但有時需要針對特定需求將DataFrame轉為List。本文從多個方面針對Python DataFrame轉List詳細介紹。…

    編程 2025-04-27
  • Python中list和tuple的用法及區別

    Python中list和tuple都是常用的數據結構,在開發中用途廣泛。本文將從使用方法、特點、存儲方式、可變性以及適用場景等多個方面對這兩種數據結構做詳細的闡述。 一、list和…

    編程 2025-04-27
  • 使用Flutter開發ToDo List App

    本文將會介紹如何使用Flutter開發一個實用的ToDo List App。ToDo List,即待辦事項清單,是一種記錄人們未處理工作和待辦事項的方式。隨着日常生活的快節奏,如此…

    編程 2025-04-27
  • list長度

    一、長度對內存和性能的影響 在Python中,list是一種基本的數據類型,它常常被用於存儲數據。然而,當list的長度不斷增加時,它對於內存和性能的影響也逐漸加重。 在處理大量數…

    編程 2025-04-25
  • List of Devices Attached是什麼意思

    一、介紹 在Android應用程序開發中,List of Devices Attached這個術語是非常常見的。它的簡稱是LoDA,大多數情況下,我們可以看到這個縮寫在Androi…

    編程 2025-04-25
  • 深入理解ES5新特性

    ES5是ECMAScript5的簡稱,它是JavaScript的一種標準,自2009年推出以來一直被廣泛使用。相比之前的版本,ES5帶來了許多新特性和更好的語法支持。在本文中,將會…

    編程 2025-04-25

發表回復

登錄後才能評論