java lambda用法示例

整理一下常用的lambda语法和示例。

示例实体:

@Data
@Accessors(chain = true)
@AllArgsConstructor
public static class User {
    private Integer id;
    private String name;
    private String sex;
    private Integer age;
}
public static List<User> users;
static {
    users = new ArrayList<>();
    users.add(new User(1, "libai", "M",23));
    users.add(new User(2, "zhaoyun", "M",18));
    users.add(new User(3, "hanxin", "F",19));
    users.add(new User(4, "kai", "F",21));
    users.add(new User(5, "yao", "F",26));
}

public static void main(String[] args) {
}
forEach

遍历集合。

users.stream().forEach(
	item -> System.out.println(item.getId())
);
filter

从集合筛选出符合条件的记录。

示例一:返回符合条件的第一条记录。

Optional<User> optional = users.stream().filter(
	item ->	item.getId().equals("1")
).findFirst();

示例二:返回符合条件所有记录。

List<User> collect= users.stream().filter(
	item -> item.getId().equals("1")
).collect(Collectors.toList());
Groupingby

示例:根据某个字段相同的实体分成一组。

Map<String, List<User>> collect = users.stream().collect(
    Collectors.groupingBy(c -> c.getSex())
);
Comparator

示例:按照User的年龄升序给list排序。

users.sort((User o1, User o2) -> o1.getAge().compareTo(o2.getAge()));
listToMap

示例一:list转换成map,map的key为user的Id,value为user实体。

Map<Integer, User> userMap= users.stream().collect(
        Collectors.toMap((key -> key.getId()), (value -> value))
);

示例二:list转换成map,map的key为user的Id,value为user某个字段。

Map<Integer, String> propMap = users.stream().collect(
       Collectors.toMap(User::getId, User::getName)
);
map-reduce

示例:计算list中User的年龄总和。

Optional<Integer> reduce = users.stream().map(User::getAge).reduce((i, j) -> i + j);
flatmap

示例:给定String数组,去重输出。

String[] words = new String[]{"Hello","World"};
List<String> a = Arrays.stream(words)
        .map(word -> word.split(""))
        .flatMap(Arrays::stream)
        .distinct()
        .collect(toList());
a.forEach(System.out::print);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值