Java中Stream流的map方法示例詳解
一、介紹
當(dāng)學(xué)習(xí)Lambda表達(dá)式時,了解和掌握map()方法是非常重要的,因為它是函數(shù)式編程中常用的一種轉(zhuǎn)換操作。在Java中,map()方法通常與流(Stream)一起使用,用于將流中的每個元素映射到另一個元素。
下面是關(guān)于map()方法的一篇學(xué)習(xí)指南:
二、學(xué)習(xí)Lambda表達(dá)式中的map()方法
1、什么是map()方法?
map()方法是流(Stream)類中的一個中間操作方法,它接受一個函數(shù)作為參數(shù),并將該函數(shù)應(yīng)用于流中的每個元素,然后返回一個新的流,其中包含由該函數(shù)的結(jié)果組成的元素。
2、語法
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function<? super T, ? extends R>:接受一個泛型類型T的參數(shù),并返回一個泛型類型R的結(jié)果的函數(shù)。
3、示例
假設(shè)我們有一個字符串列表,我們想將其中每個字符串轉(zhuǎn)換為大寫形式。我們可以使用map()方法來實現(xiàn)這個轉(zhuǎn)換:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> upperCaseNames = names.stream()
.map(name -> name.toUpperCase())
.collect(Collectors.toList());
System.out.println(upperCaseNames); // 輸出: [ALICE, BOB, CHARLIE]4、 解析
- 我們首先將字符串列表轉(zhuǎn)換為流,使用
stream()方法。 - 然后,我們調(diào)用
map()方法,并傳遞一個Lambda表達(dá)式,該表達(dá)式將每個元素轉(zhuǎn)換為大寫形式。 - 最后,我們使用
collect(Collectors.toList())方法將流中的元素收集到一個新的列表中。
1、注意事項
map()方法返回的是一個新的流,原始流不會受到影響。- 傳遞給
map()方法的Lambda表達(dá)式應(yīng)該是無狀態(tài)的,不應(yīng)該修改外部的狀態(tài)或變量。
2、應(yīng)用場景
- 數(shù)據(jù)轉(zhuǎn)換:將一種類型的數(shù)據(jù)轉(zhuǎn)換為另一種類型。
- 數(shù)據(jù)提?。簭膶ο笾刑崛√囟▽傩曰蛐畔ⅰ?/li>
- 數(shù)據(jù)處理:對數(shù)據(jù)進(jìn)行邏輯處理或計算。
3、結(jié)論
map()方法是Lambda表達(dá)式中一個非常有用且強(qiáng)大的功能,它使得在集合數(shù)據(jù)上進(jìn)行轉(zhuǎn)換和處理變得更加簡單和直觀。通過學(xué)習(xí)和掌握map()方法,你將能夠更好地利用Lambda表達(dá)式來提高Java編程的效率和可讀性。
二、案例舉例
public void test() throws ParseException {
List<People> peopleList = new ArrayList<People>();
People people1 = new People("張三", 18);
People people2 = new People("王五", 19);
peopleList.add(people1);
peopleList.add(people2);
Stream<String> peopleStream = peopleList.stream().map(
//使用匿名接口Function重寫抽象方法apply,參數(shù)一為傳入類型,參數(shù)二為傳出類型
new Function<People, String>() {
@Override
public String apply(People people) {
people.setName("姓名:" + people.getName());
return people.getName();
}
}
);
peopleStream.forEach(s -> System.out.println(s));
System.out.println("========================================================");
Stream<People> peopleStream2 = peopleList.stream().map(
//lambda
s->addAge(s)
);
peopleStream2.forEach(s -> System.out.println(s));
}
public People addAge(People people){
people.setAge(people.getAge()+1);
return people;
}2、實體類
public class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public People() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}3、效果

三、其他
Stream中of方法傳入可變參數(shù)
Stream中map元素類型轉(zhuǎn)化方法
1、stream流獲取某一個字段集合
List<String> names = personList.stream()
.map(person -> person.getName())
.collect(Collectors.toList());
- 堅持并不是一時的決心,而是每一天不斷行動的力量。
- 不管過去有多少失敗,未來依然是勝利的希望之地。
- 當(dāng)你放下過去的包袱,才能邁向更美好的未來。
- 夢想不會自動成真,需要我們用行動和努力去實現(xiàn)。
- 如果你相信自己,無論多困難的道路都能走出光明的終點(diǎn)。
到此這篇關(guān)于Java中學(xué)習(xí)Stream流的map方法的文章就介紹到這了,更多相關(guān)Java Stream流map方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot手動連接庫并獲取指定表結(jié)構(gòu)的示例代碼
這篇文章主要介紹了Springboot手動連接庫并獲取指定表結(jié)構(gòu)的示例代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
mybatis攔截器實現(xiàn)數(shù)據(jù)權(quán)限項目實踐
本文主要介紹了mybatis攔截器實現(xiàn)數(shù)據(jù)權(quán)限項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
SpringBoot中處理跨域資源的5種實現(xiàn)方法與對比
這篇文章主要為大家詳細(xì)介紹了SpringBoot中處理跨域資源的5種實現(xiàn)方法并進(jìn)行簡單對比,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-01-01
Java class文件格式之?dāng)?shù)據(jù)類型_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下2017-06-06
SpringBoot+RabbitMQ+Redis實現(xiàn)商品秒殺的示例代碼
本文主要介紹了SpringBoot+RabbitMQ+Redis實現(xiàn)商品秒殺,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

