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(); } }
Java8 新特性 Stream流操作List集合 (一)
最新推荐文章于 2023-11-22 10:45:22 发布