万年不变的对象:
package com.zwq;
import lombok.Data;
/**
* @author zhangwq
*/
@Data
public class Student {
private int id;
private String name;
private String clazz;
private Integer age;
private Integer grade;
public Student(String name, String clazz) {
this.name = name;
this.clazz = clazz;
}
public Student() {
}
public Student(int id, String name, String clazz, int age, Integer grade) {
this.id = id;
this.name = name;
this.clazz = clazz;
this.age = age;
this.grade = grade;
}
}
* map(Function f) 接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
* mapToDouble(ToDoubleFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream。
* mapToInt(ToIntFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream。
* mapToLong(ToLongFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream。
* flatMap(Function f) 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流
@Test
public void test3(){
List<String> list = Arrays.asList("zhangsan","lisi","wangwu","zhaoliu");
list.stream().map(e->e.toUpperCase()).forEach(System.out::println);
list.stream().flatMap(e->{
List list1 = new ArrayList();
for(char x : e.toCharArray()){
list1.add(x);
}
return list1.stream();}).forEach(System.out::println);
}
* sorted() 产生一个新流,其中按自然顺序排序
* sorted(Comparator comp) 产生一个新流,其中按比较器顺序排序
@Test
public void test4(){
List<String> list = Arrays.asList("aaa","ddd","ccc","eee","bbb");
list.stream().sorted().forEach(System.out::println);
List<Student> students = Arrays.asList(
new Student(1,"zhangsan","class1",18,60),
new Student(2,"lisi","class1",20,59),
new Student(3,"wangwu","class2",18,100),
new Student(4,"wangwu","class2",16,100),
new Student(5,"wangwu","class2",22,100),
new Student(6,"zhaoliu","class2",18,80));
students.stream().sorted((x1,x2)->{
if(x1.getAge().equals(x2.getAge())){
return x1.getGrade().compareTo(x2.getGrade());
}else{
return x1.getAge().compareTo(x2.getAge());
}
}).forEach(System.out::println);
}