高度抽象的集合数据处理

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
