Java8 新特性 Stream流操作List集合 (一)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Test {
    public static List<Employee> createEmployee() {
        List<Employee> employeeList = new ArrayList<Employee>();
        Employee employee1 = new Employee();
        Employee employee2 = new Employee();
        Employee employee3 = new Employee();

        employee1.setEmployeeId("1");
        employee1.setEmployeeName("张三");
        employee1.setEmployeeSex("男");

        employee2.setEmployeeId("2");
        employee2.setEmployeeName("王五");
        employee2.setEmployeeSex("男");

        employee3.setEmployeeId("3");
        employee3.setEmployeeName("李四");
        employee3.setEmployeeSex("男");

        employeeList.add(employee1);
        employeeList.add(employee2);
        employeeList.add(employee3);

        return employeeList;
    }

    public static List<Object> createEmployeeByObject() {
        List<Object> employeeList = new ArrayList<Object>();
        Employee employee1 = new Employee();
        Employee employee2 = new Employee();
        Employee employee3 = new Employee();

        employee1.setEmployeeId("1");
        employee1.setEmployeeName("张三");
        employee1.setEmployeeSex("男");

        employee2.setEmployeeId("2");
        employee2.setEmployeeName("王五");
        employee2.setEmployeeSex("男");

        employee3.setEmployeeId("3");
        employee3.setEmployeeName("李四");
        employee3.setEmployeeSex("男");

        employeeList.add(employee1);
        employeeList.add(employee2);
        employeeList.add(employee3);

        return employeeList;
    }

    public static void list() {
        List<String> list = new ArrayList<String>();

        list.add("张无忌");
        list.add("周芷若");
        list.add("赵敏");
        list.add("张强");
        list.add("张三丰");

        /** stream 流 的终结方法 forEach 和 count **/
        // Java8 遍历 stream 流 遍历  forEach
        list.stream().forEach(item -> System.out.println(item));
        System.out.println("******************************************************************");

        // stream 流 统计个数  count
        System.out.println(list.stream().count());
        System.out.println("******************************************************************");

        /** stream 流的 延迟方法 可以进行链式编程,可以一直点下去直到最后一步终结处理数据(forEach 或 count) **/
        // 1、filter 过滤  stream 流 加上条件筛选过滤
        list.stream().filter(item -> item.startsWith("张")).filter(item -> item.length() > 2).forEach(System.out::println);
        System.out.println("******************************************************************");

        // 2、map() 方法  将流中的元素映射到另一个流中
        Stream<String> stringStream = Stream.of("1", "2", "3", "4", "5");
        // 将String转为Interger
        stringStream.map(str -> Integer.parseInt(str)).forEach(System.out::println);
        System.out.println("******************************************************************");
        // 实体转字符串 流映射
        List<Employee> employeeList = createEmployee();
        // collect 是将数组转集合 ,这句话的意思是将员工集合遍历然后将名字取出来转为一个集合 结果是 [张三, 王五, 李四]
        List<String> listString = employeeList.stream().map(employee -> employee.getEmployeeName()).collect(Collectors.toList());
        System.out.println(listString);
        System.out.println("******************************************************************");

        // 例子3 将List<Object> 转为 List<Employee>  Object 为 Employee 的JSON对象
        List<Object> listObject = createEmployeeByObject();
        List<Employee> listEmployee = listObject.stream().map(o -> JSONObject.parseObject(JSON.toJSONString(o), Employee.class)).collect(Collectors.toList());
        System.out.println(listEmployee);
        System.out.println("******************************************************************");

        // 3、contract 方法 将两个流合并成一个流
        Stream<String> streamA = Stream.of("张无忌", "张翠山");
        Stream<String> streamB = Stream.of("美羊羊", "喜羊羊");
        Stream<String> streamC = Stream.of("张无忌", "张翠山");
        Stream<String> streamD = Stream.of("美羊羊", "喜羊羊");

        // 写法方式 1
        Stream.concat(streamA, streamB).forEach(System.out::println);
        System.out.println("******************************************************************");

        // 写法方式 2
        Stream<String> result = Stream.concat(streamC, streamD);
        result.forEach(name -> System.out.println(name + "\t"));
    }

    public static void main(String[] args) {
        list();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值