Java 8 Stream 使用

 

示例如下:

package com.stream;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author: void
 * @date: 2021-10-21 18:09
 * @description:
 * @version: 1.0
 */
public class Stream {


    public static void main(String[] args) {
        List<User> userList = getUserList();

        //foreach来迭代流的数据,迭代输出
        System.out.println("----------------forEach()------------------");
        userList.forEach(System.out::println);

        System.out.println("----------------map()------------------");
        //map方法用于映射每个元素到对应结果
        userList.stream().map(e->{
            e.setAge(e.getAge()+5);
            return e;
        }).collect(Collectors.toList());
        userList.forEach(System.out::println);

        //取userlist中每个实体的name字段组成list
        List<String> nameList = userList.stream().map(e->e.getName()).collect(Collectors.toList());
        nameList.forEach(System.out::println);

        System.out.println("---------------filter()-------------------");
       //filter 方法用于通过设置的条件过滤出元素。
        List<User> userList2 = userList.stream().filter(user -> {
                return user.getAge()>=23;
        }).collect(Collectors.toList());
        userList2.forEach(System.out::println);

        System.out.println("----------------limit()------------------");
        //limit 方法用于获取指定数量的流
        List<User> userList3 = userList.stream().limit(1).collect(Collectors.toList());
        userList3.forEach(System.out::println);

        //sorted用于对流进行排序
        System.out.println("----------------sorted()------------------");
        List list = Arrays.asList(2,3,4,1).stream().sorted().collect(Collectors.toList());
        list.forEach(System.out::println);

        System.out.println("----------------distinct()------------------");
        //distinct 去掉集合内重复元素
        List list1 = Arrays.asList(1,1,4,5,6,7,8,6).stream().distinct().collect(Collectors.toList());
        System.out.println(list1);


        //Collectors
        System.out.println("-----------------collect(Collectors.xxx)-----------------");
        //返回列表,上述示例都是返回列表
        //返回字符串 Collectors.joining()
        String names=userList.stream().map(e->e.getName()).collect(Collectors.joining(","));
        System.out.println(names);

        //返回Map  Collectors.toMap()
        Map<String,User> nameMap=userList.stream().collect(Collectors.toMap(User::getName, user -> {return user;}));
        //如果userList里面存在相同的key会报错,传入合并方法  (u,v)->u :当key相同时,取第一个
        Map<String,User> nameMap2=userList.stream().collect(Collectors.toMap(User::getName, user -> {return user;},
                (u,v)->u));
        System.out.println(nameMap2);

    }


    /**
     * 获取用户列表
     * @return
     */
    public static List<User> getUserList(){
        List<User> users = new ArrayList<>();
        User user = null;
        for(int i=0;i<3;i++){
            user = new User("测试"+i,17+i,0);
            users.add(user);
        }
        return users;
    }
}

 

上一篇:Map和floatMap


下一篇:Cat userlist课上练习