Java Stream 流 基本操作

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class TestApplication {

    public static void main(String[] args) {

        List<user> lstEntity = Arrays.asList(
                new user("小红", 20, 1000),
                new user("小白", 21, 2400),
                new user("小蓝", 20, 1600),
                new user("小黑", 25, 1000),
                new user("小绿", 30, 3000)
        );

        //filter
        // 示例:筛选出年龄大于20,并返回筛选后的集合
        List<user> lstUser1 = lstEntity.stream().filter(user -> user.getAge() > 20).collect(Collectors.toList());
        // 示例:筛选出age>20并且num>2000,并返回筛选后的集合
        Predicate<user> predicate1 = u -> u.getAge() > 20;
        Predicate<user> predicate2 = u -> u.getNum() > 2000;
        List<user> lstUser2 = lstEntity.stream().filter(predicate1.and(predicate2)).collect(Collectors.toList());

        //sorted
        // 示例:根据年龄进行倒序排序,并返回排序后的集合
        List<user> lstAgeAes = lstEntity.stream().sorted(Comparator.comparing(user::getAge).reversed()).collect(Collectors.toList());

        //map
        // 示例:筛选出age>20 并返回name集合
        List<String> lstNames= lstEntity.stream().filter(u->u.getAge()>20).map(user::getName).collect(Collectors.toList());
        // 示例:给所有name加上前缀,map操作会改变lstEntity集合
        List<user> lstSetNames= lstEntity.stream().map(u->{u.setName("Hello!"+u.getName());return u;}).collect(Collectors.toList());

        //limit
        // 示例:获取集合的前两条数据,并返回集合
        List<user> lstLimits= lstEntity.stream().limit(2).collect(Collectors.toList());

        //forEach
        // 示例:遍历打印集合
        lstEntity.forEach(System.out::println);
    }
}
import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class user {
    private  String name;
    private Integer age;
    private Integer num;
}

猜你喜欢

转载自blog.csdn.net/liyayou/article/details/129616917