Stream流式处理&&Lambda表达式

高度抽象的集合数据处理

image

1. 使用Stream流对List<Integer>进行去重、去偶数,然后查找最大值

1import java.util.Arrays; 2import java.util.Comparator; 3 4public class Stream1 { 5 public static void main(String[] args) { 6 int max = Arrays.asList(1,2,2,5,6,8,9) 7 .stream() 8 //去重 9 .distinct() 10 //去偶 11 .filter(n -> n%2 != 0) 12 //取最大 13 .max(Comparator.comparing(n -> n)) 14 .get(); 15 System.out.println(max); 16 } 17} 18

2. 使用Stream流对List<Integer>进行排序,然后取第一个值

1import java.util.Arrays; 2import java.util.Comparator; 3 4public class Stream2 { 5 public static void main(String[] args) { 6 int first = Arrays.asList(1,2,2,5,6,8,9) 7 .stream() 8 //排序-升序 9 .sorted(Comparator.comparing(n -> n)) 10 //取第一 11 .findFirst() 12 .get(); 13 System.out.println(first); 14 15 int first_reversed = Arrays.asList(1,2,2,5,6,8,9) 16 .stream() 17 //排序-降序 18 .sorted(Comparator.comparing(n -> n,Comparator.reverseOrder())) 19 .findFirst() 20 .get(); 21 System.out.println(first_reversed); 22 23 } 24} 25

3. 使用Stream流对List<Integer>进行求平均值、求和

1import java.util.Arrays; 2 3public class Stream3 { 4 public static void main(String[] args) { 5 //求平均值 6 double average = Arrays.asList(1,2,2,5,6,8,9) 7 .stream() 8 //对流中的元素执行一对一的转换 9 .mapToInt(n->n) 10 //返回流中所有元素的平均值 11 .average() 12 .getAsDouble(); 13 System.out.println(average); 14 15 //求和 16 int sum = Arrays.asList(1,2,2,5,6,8,9) 17 .stream() 18 .mapToInt(n->n) 19 .sum(); 20 System.out.println(sum); 21 } 22} 23

4. 使用Stream流对List<Person>进行排序,按照age从大到小排序

1import java.util.Arrays; 2import java.util.Comparator; 3import java.util.List; 4import java.util.stream.Collectors; 5 6public class Stream4 { 7 static class Person{ 8 int age; 9 String name; 10 11 public Person(int age, String name) { 12 this.age = age; 13 this.name = name; 14 } 15 16 public int getAge() { 17 return age; 18 } 19 20 public void setAge(int age) { 21 this.age = age; 22 } 23 24 public String getName() { 25 return name; 26 } 27 28 public void setName(String name) { 29 this.name = name; 30 } 31 32 @Override 33 public String toString() { 34 return "Person{" + 35 "age=" + age + 36 ", name='" + name + '\'' + 37 '}'; 38 } 39 } 40 41 42 static List<Person> list = Arrays.asList( 43 new Person(30,"王五"), 44 new Person(33,"张三"), 45 new Person(27,"李四") 46 ); 47 public static void main(String[] args) { 48 System.out.println("排序前:"+list); 49 List<Person> personList = list 50 .stream() 51 .sorted(Comparator.comparing(n->n.getAge())) 52 .collect(Collectors.toList()); 53 System.out.println("排序后:"+personList); 54 } 55} 56
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

java8 stream 集合去重

/Description:JDK1.8的Stream操作工具类@authorlinan.du@date2019年7月18日@version1.0/publicclassStreamUtil{/

Java8系列之Stream总结

流的简介  官方解释,Stream是Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。它也不同于StAX对XML的解析的Stream,也不是AmazonKinesis对大数据实时处理的Stream。它是对集合对象功能的增强,她专注于对集合对象进行各种非常便利、高效的聚合操作(ag

Java8 新特性之流式数据处理

一.流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List<Inte

Java学习:Stream流式思想

Stream流Java8API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。流式思想:像生产流水线一样,一个操作接一个操作。使用Stream流的步骤:数据源→转换成流→操作1→操作2→……数据源(source):可以是集合、数组等。St