一、集合中的使用
集合的遍历
1
2
3
4
5
6
7
8
9
10
11
12// 初始化集合
List<User> users = new ArrayList<>();
users.add(new User("詹姆士",22,"男"));
users.add(new User("露西",21,"女"));
users.add(new User("弗兰克",25,"男"));
users.add(new User("爱丽丝",27,"女"));
users.add(new User("路易斯",22,"男"));
// 遍历集合 Lambda
users.stream().forEach(user -> System.out.println(user));
// 遍历集合 方法引用
users.stream().forEach(System.out::println);方法引用(::双冒号操作符)
其实就是一种Lambda表达式的简写方式,它提供了一种引用而不执行方法的方式,运行时,方法引用会创建一个函数式接口的实例。
方法引用的五种方式:
—- —- 引用对象的实例方法 对象::实例方法名 引用类的静态方法 类::静态方法名 引用类的实例方法 类::实例方法名 引用构造方法 类::new 数组引用 类型::new
List转Map
1
2// 这里的toMap有三个参数,第一个取的名称为 key,第二个参数 表示整个user对象为一个 value,最后一个参数可以不加,它的作用是如果 key 值有重复的,如何处理
Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getName, a -> a, (k1, k2) -> k1));将List分组
1
2// 根据性别进行分类
Map<String, List<User>> groupBy = users.stream().collect(Collectors.groupingBy(User::getSex));集合过滤
1
2// 过滤出男性
List<User> filterList = users.stream().filter(user -> user.getSex().equals("男")).collect(Collectors.toList());集合求和
1
2// 年龄和
int sum = users.stream().mapToInt(User::getAge).sum();
二、代替Runnable
1 | // 利用Lambda实现Runnable里的run方法 |
三、Predicate条件过滤
1 | public static void main(String[] args) { |
四、Map映射
1 | // 将返回一个将每个数字都×2的新List |
五、Reduce聚合
1 | // 返回所有成员的和 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BETTER LATE THAN NEVER!
评论