Stream方法
1、filter(T-> boolean) 过滤
public static void filter(){
List<User> list = users();
List<User> newlist = list.stream().filter(user -> user.getAge() > 20)
.collect(Collectors.toList());
for (User user : newlist) {
System.out.println(user.getName()+" --> "+ user.getAge());
}
}
2、distinct 去重
数据源中复制new User("李星云", 18, 0, "渝州",new BigDecimal(1000)) 并粘贴两个
public static void distinct(){
List<User> list = users();
List<User> newlist = list.stream().distinct().collect(Collectors.toList().reversed());
for (User user : newlist) {
System.out.println(user.getName()+" --> "+ user.getAge());
}
}
3、sorted 排序
public static void sorted(){
List<User> list = users();
List<User> newlist = list.stream()
.sorted(Comparator.comparingInt(User::getAge))
.collect(Collectors.toList());
for (User user : newlist) {
System.out.println(user.getName()+" --> "+ user.getAge());
}
}
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
4、limit返回前n个元素
public static void limit(){
List<User> list = users();
List<User> newlist = list.stream()
.sorted(Comparator.comparingInt(User::getAge))
.limit(2)
.collect(Collectors.toList());
for (User user : newlist) {
System.out.println(user.getName()+" --> "+ user.getAge());
}
}
5、skip去除前n个元素
public static void skip(){
List<User> list = users();
List<User> newlist = list.stream()
.sorted(Comparator.comparingInt(User::getAge))
.skip(2)
.collect(Collectors.toList());
for (User user : newlist) {
System.out.println(user.getName()+" --> "+ user.getAge());
}
}
6、map(T->R) 输出查询的内容
public static void map(){
List<User> list = users();
List<String> newlist = list.stream()
.map(User::getName).distinct().collect(Collectors.toList());
for (String add : newlist) {
System.out.println(add);
}
}
7、flatMap(T -> Stream)
public static void flatmap(){
List<String> flatmap = new ArrayList<>();
flatmap.add("常宣灵,常昊灵");
flatmap.add("孟婆,判官红,判官蓝");
flatmap = flatmap.stream()
.map(s -> s.split(","))
.flatMap(Arrays::stream)
.collect(Collectors.toList());
for (String name : flatmap) {
System.out.println(name);
}
}
8、allMatch(T->boolean)检测是否全部满足参数行为
public static void allMatch(){
List<User> list = users();
boolean flag = list.stream()
.allMatch(user -> user.getAge() >= 17);
System.out.println(flag);
}
9、anyMatch(T->boolean)检测是否有任意元素满足给定的条件
public static void anyMatch(){
List<User> list = users();
boolean flag = list.stream()
.anyMatch(user -> user.getSex() == 1);
System.out.println(flag);
}
10、noneMatchT->boolean)流中是否有元素匹配给定的 T -> boolean条件
public static void noneMatch(){
List<User> list = users();
boolean flag = list.stream()
.noneMatch(user -> user.getAddress().contains("郑州"));
System.out.println(flag);
}
11、findFirst( ):找到第一个元素
public static void findfirst(){
List<User> list = users();
Optional<User> optionalUser = list.stream()
.sorted(Comparator.comparingInt(User::getAge))
.findFirst();
System.out.println(optionalUser.toString());
}
12、findAny( ):找到任意一个元素
public static void findAny(){
List<User> list = users();
.findAny();
Optional<User> optionalUser = list.stream()
.findAny();
System.out.println(optionalUser.toString());
}
13、计算总数
```java
public static void count(){
List<User> list = users();
long count = list.stream().count();
System.out.println(count);
}
14、最大值 最小值
public static void max_min(){
List<User> list = users();
Optional<User> max = list.stream()
.collect(
Collectors.maxBy(
Comparator.comparing(User::getAge)
)
);
Optional<User> min = list.stream()
.collect(
Collectors.minBy(
Comparator.comparing(User::getAge)
)
);
System.out.println("max--> " + max+" min--> "+ min);
}
15、求和_平均值
public static void sum_avg(){
List<User>list = users();
int totalAge = list.stream()
.collect(Collectors.summingInt(User::getAge));
System.out.println("totalAge--> "+ totalAge);
BigDecimal totalMpney = list.stream()
.map(User::getMoney)
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("totalMpney--> " + totalMpney);
double avgAge = list.stream()
.collect(Collectors.averagingInt(User::getAge));
System.out.println("avgAge--> " + avgAge);
}
16、一次性得到元素的个数、总和、最大值、最小值
public static void allVlaue(){
List<User> list = users();
IntSummaryStatistics statistics = list.stream()
.collect(Collectors.summarizingInt(User::getAge));
System.out.println(statistics);
}
17、拼接
public static void join(){
List<User> list = users();
String names = list.stream()
.map(User::getName)
.collect(Collectors.joining(", "));
System.out.println(names);
}
18、分组
public static void group(){
Map<Integer, List<User>> map = users().stream()
.collect(Collectors.groupingBy(User::getSex));
System.out.println(new Gson().toJson(map));
System.out.println();
Map<Integer, Map<Integer,List<User>>> map2 = users().stream()
.collect(Collectors.groupingBy(User::getSex,
Collectors.groupingBy(User::getAge)));
System.out.println(new Gson().toJson(map2));
}
19、分组合计
public static void groupCount(){
Map<Integer, Long> num = users().stream()
.collect(Collectors.groupingBy(User::getSex, Collectors.counting()));
System.out.println(num);
Map<Integer, Long> num2 = users().stream()
.filter(user -> user.getAge()>=18)
.collect(Collectors.groupingBy(User::getSex, Collectors.counting()));
System.out.println(num2);
}
20、分区
public static void partitioningBy(){
List<User> list = users();
Map<Boolean, List<User>> part = list.stream()
.collect(Collectors.partitioningBy(user -> user.getAge() <= 30));
System.out.println(new Gson().toJson(part));
}
21、计算Stream流长度
public static void partitioningBy(){
List<User> list = users();
long size;
size= list.stream().count();
System.out.println(size);
}