User类:
package com.test.demo.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String UserName;
private int age;
}
//具体使用:
package com.test.demo.juc;
import com.test.demo.bean.User;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreaamDemo {
public static void main(String[] args) {
User u1 = new User(11,"a",23);
User u2 = new User(12,"b",24);
User u3 = new User(13,"c",22);
User u4 = new User(14,"d",28);
User u5 = new User(16,"e",26);
List<User> list = Arrays.asList(u1,u2,u3,u4,u5);
// filter 过滤数据
// map 可以返回指定列,也可处理对象后返顺对象
// limit 需要几条记录
// sorted 排序(默认asc)
// sum 汇总(需要 mapToInt)
// count 记录数
// groupingBy 分组
// 修改对象内的数据
list.stream().filter(t->{return t.getAge() >=24;}).filter(t->{return t.getAge()<=26;})
.map(t->{
String s = t.getUserName();
t.setUserName(s.toUpperCase());
return t;
})
.sorted((o1,o2)->{return Integer.compare(o2.getAge(),o1.getAge());})
.forEach(System.out::println);
// map后排序(返回特定列) desc
list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.map(t->{return t.getUserName().toUpperCase();})
.sorted((o1,o2)->{return o2.compareTo(o1);})
.forEach(System.out::println);
// 年龄排序 desc
list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.sorted((o1,o2)->{return Integer.compare(o2.getAge(),o1.getAge());})
.forEach(System.out::println);
// 姓名排序 desc
list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.sorted((o1,o2)->{return o2.getUserName().compareTo(o1.getUserName());})
.forEach(System.out::println);
// 姓名排序只要第一条
list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.sorted((o1,o2)->{return o2.getUserName().compareTo(o1.getUserName());}).limit(1)
.forEach(System.out::println);
// 求总年龄
int sum = list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.mapToInt(t->{return t.getAge();}).sum();
// 求总记录数
long count = list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.sorted((o1,o2)->{return o2.getUserName().compareTo(o1.getUserName());}).limit(1)
.count();
// 姓名分组
Map<String, List<User>> collect = list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.sorted((o1,o2)->{return o2.getUserName().compareTo(o1.getUserName());}).collect(Collectors.groupingBy(User::getUserName));
// id自定义分组
Map<Object, List<User>> collect1 = list.stream().filter(t->{return t.getAge() >1;})
.sorted((o1,o2)->{return o2.getUserName().compareTo(o1.getUserName());}).collect(Collectors.groupingBy(o->{return o.getId() % 2 == 0;}));
// stream生成list
List<String> lst = list.stream().filter(t->{return t.getId() %2 ==0;}).filter(t->{return t.getAge() >24;})
.map(t->{return t.getUserName().toUpperCase();}).collect(Collectors.toList());
}
}