看到这个公众号 Java技术前线 ,有所感想,于是把目前工作中常用的几个列出来!
常用表达式:
- collect(Collectors.toList()) 将流转换为list。还有toSet(),toMap()等
-
filter 过滤筛选
-
max和min 在集合中求最大或最小值
-
count 统计,结合filter使用
-
sorted 排序 默认升序
import com.bigdata.bigdata.entity.User;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Auther: lirui
* @Date: 2020/11/1 0:12
* @Description: Lambda测试
*/
public class TestLambda {
public static void main(String[] args) {
List<User> userList = Stream.of(new User("肖战", "男", 30),
new User("王一博", "男", 24),
new User("李易峰", "男", 34)).collect(Collectors.toList());
System.out.println(userList);
Set<String> stringSet = Stream.of("肖战","王一博","肖战").collect(Collectors.toSet());
System.out.println(stringSet);
List<String> names = userList.stream().map(user -> user.getName())
.collect(Collectors.toList());
System.out.println(names);
String nameStr = userList.stream().map(User::getName)
.collect(Collectors.joining(",","",""));
System.out.println(nameStr);
List<User> users=new ArrayList<>();
users.add(new User("肖战", "男", 30));
users.add(new User("王一博", "男", 24));
users.add(new User("李易峰", "男", 34));
//查询年龄大于25的,年龄升序排序,
List<User> list = users.stream()
.filter(stu -> stu.getAge() > 25)
.sorted(Comparator.comparing(User::getAge))
.collect(Collectors.toList());
//[User{name='肖战', sex='男', age=30}, User{name='赵丽颖', sex='女', age=30}, User{name='李易峰', sex='男', age=34}]
System.out.println(list);
//查询年龄大于25的,年龄升序排序,根据性别进行分组
Map<String, List<User>> list1 = users.stream()
.filter(stu -> stu.getAge() > 25)
.sorted(Comparator.comparing(User::getAge))
.collect(Collectors.groupingBy(User::getSex));
//{女=[User{name='赵丽颖', sex='女', age=30}], 男=[User{name='肖战', sex='男', age=30}, User{name='李易峰', sex='男', age=34}]}
System.out.println(list1);
//在第一个字段数据相同的对第二个字段进行比较
//对age升序,name降序
List<User> collect = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
.thenComparing(Comparator.comparing(User::getName).reversed()))
.collect(Collectors.toList());
System.out.println(collect);
//对age降序,name升序
List<User> collect1 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge).reversed()
.thenComparing(Comparator.comparing(User::getName)))
.collect(Collectors.toList());
System.out.println(collect1);
//对age降序,name降序
List<User> collect2 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
.thenComparing(Comparator.comparing(User::getName)).reversed())
.collect(Collectors.toList());
System.out.println(collect2);
//对age升序,name升序
List<User> collect3 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
.thenComparing(Comparator.comparing(User::getName)))
.collect(Collectors.toList());
System.out.println(collect3);
Optional<User> max = users.stream()
.max(Comparator.comparing(stu -> stu.getAge()));
Optional<User> min = users.stream()
.min(Comparator.comparing(stu -> stu.getAge()));
//判断是否有值
if (max.isPresent()) {
System.out.println(max.get());
}
if (min.isPresent()) {
System.out.println(min.get());
}
long count = users.stream().filter(s1 -> s1.getAge() > 25).count();
System.out.println("年龄大于25岁的人数是:" + count);
Predicate<Integer> predicate = x -> x > 24;
User user = new User("肖战", "男", 30);
System.out.println("肖战的年龄大于24吗?:" + predicate.test(user.getAge()));
}
}
后面工作中会出现其他信息,会继续补充的