Stream流中map方法


Stream流中map方法

使用Stream流時發現其中的map方法使用有一些不太容易理解的地方,分析一下具體的流程,以一個小案例詳細探討Stream中map的使用。
案例涉及:
1、Stream中of方法傳入可變參數
2、Stream中map元素類型轉化方法
3、Function匿名接口,people匿名對象的使用
4、String中split切割方法
5、Lambda表達式
匿名對象也可以使用Lambda替換,達到精簡的效果,因為了便於理解只在forEach遍歷下使用了Lambda表達式)。

以下是程序:

public class Demo {
    public static void main(String[] args) {
        Stream.of("小王:18","小楊:20").map(new Function<String, People>() {
            @Override
            public People apply(String s) {
                String[] str = s.split(":");
                People people = new People(str[0],Integer.valueOf(str[1]));
                return people;
            }
        }).forEach(people-> System.out.println("people = " + people));
    }
}

   
   
   
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

程序分析:

public class Demo {
    public static void main(String[] args) {
        Stream.of("小王:18","小楊:20")//使用Stream中的of方法傳入兩個字符串
                .map(new Function<String, People>() {
                    /*調用Stream中的map方法,使用匿名接口Function,
                    需要重寫Function中的抽象方法apply,apply方法需要傳入兩個數據,
                    前一個為轉化前的String類型,后一個為轉化后的對象類型*/
            @Override
            public People apply(String s) {//傳入要轉變的參數
                String[] str = s.split(":");
                //調用String中的split方法,以:切割,定義一個字符串接收切割后的字符串數據
                People people = new People(str[0],Integer.valueOf(str[1]));//對象家接收匿名對象切割后的元素。數組索引0為字符串,數組索引1為數字
                return people;//返回people類型對象
            }
        }).forEach(people-> System.out.println("people = " + people));
        //使用Stream中的forEach遍歷People中的對象,使用了Lambda方式,重寫了方法遍歷輸出
    }
}

   
   
   
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

使用的People類:

public class People {
    private String name;
    private int age;
public People(String name, int age) {
    this.name = name;
    this.age = age;
}

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 +
            '}';
}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

Stream流中的map方法可以將字符串轉換為對象接收,使代碼的靈活性更高,Lambda表達式的簡潔效果讓開發者的效率升高,雖然Lambda在可讀性方面不太便捷,對於經常使用的人來說也是十分方便。

引用自:https://blog.csdn.net/weixin_45531950/article/details/99664197


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM