Java8 Stream.map()方法使用详解

作者 | 2020年3月27日

在Java中,stream().map()方法可以让你转换一个对象为其它的对象。

1. 转换List中的字符串为大写

1.1 这是一个简单的例子,实现的功能是把List中的字符串全部转为大写字母。

TestJava8.java

package cc.myexample.java8;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class TestJava8 {

    public static void main(String[] args) {

        List<String> alpha = Arrays.asList("a", "b", "c", "d");

        // Java8之前
        List<String> alphaUpper = new ArrayList<>();
        for (String s : alpha) {
            alphaUpper.add(s.toUpperCase());
        }

        System.out.println(alpha); //[a, b, c, d]
        System.out.println(alphaUpper); //[A, B, C, D]

        // 使用Java 8的stream().map()方法
        List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
        System.out.println(collect); //[A, B, C, D]

        //计算2 * n
        List<Integer> num = Arrays.asList(1,2,3,4,5);
        List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
        System.out.println(collect1); //[2, 4, 6, 8, 10]

    }

}

2. List<Object>List<String>

2.1 取出List<Staff>中每一个Staffname,最后的结果是List

Staff.java

package cc.myexample.java8;

import java.math.BigDecimal;

public class Staff {

    private String name;
    private int age;
    private BigDecimal salary;
    //...
}

TestJava8.java

package cc.myexample.java8;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class TestJava8 {

    public static void main(String[] args) {

        List<Staff> staff = Arrays.asList(
                new Staff("myexample", 30, new BigDecimal(10000)),
                new Staff("jack", 27, new BigDecimal(20000)),
                new Staff("lawrence", 33, new BigDecimal(30000))
        );

        // Java 8之前
        List<String> result = new ArrayList<>();
        for (Staff x : staff) {
            result.add(x.getName());
        }
        System.out.println(result); //[myexample, jack, lawrence]

        // 使用Java 8的stream().map()方法
        List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());
        System.out.println(collect); //[myexample, jack, lawrence]

    }

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注