lambda之美学习

大家好,参考:https://zhuanlan.zhihu.com/p/265826395

2常用的流

  • 2.1 collect(Collectors.toList())
    将流转为list
List<String> list = Stream.of("1,2,3").collect(Collectors.toList());
		System.out.println(list);
  • 2.2 filter
    这是用到的数据
List<Person> personList = new ArrayList<Person>();
		personList.add(new Person("Tom", 8900, 23, "male", "New York"));
		personList.add(new Person("Jack", 7000, 25, "male", "Washington"));
		personList.add(new Person("Lily", 7800, 21, "female", "Washington"));
		personList.add(new Person("Anni", 8200, 24, "female", "New York"));
		personList.add(new Person("Owen", 9500, 25, "male", "New York"));
		personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

代码展示

List<Person> list = personList.stream()
		                      .filter(p -> p.getSalary() > 3000)
		                      .collect(Collectors.toList());
  • 2.3 map
    转换功能,内部是function接口;惰性求值
List<String> names = personList.stream()
.map(p -> p.getName())
.collect(Collectors
.toList());
  • 2.4 flatmap
    将多个Stream合并

  • 2.5 max和min

Integer max = personList.stream()
		                        .max(Comparator.comparing(e -> e.getSalary()))
		                        .get()
		                        .getSalary();

-2.6 count

long count = personList.stream()
		                       .filter(s1 -> s1.getSalary() > 3000)
		                       .count();

-2.7 reduce

Integer reduce = Stream.of(1, 2, 4, 5).reduce(0, (acc, x) -> acc + x);

三、高级集合类及收集器

-3.1 转换成值
收集器,一种通用的、从流生成复杂值的结构。只要将它传给 collect 方法,所有的流就都可以使用它了。

  • 3.2转换成块
Map<Boolean, List<Person>> listMap =
				personList.stream()
				          .collect(Collectors.partitioningBy(p -> p.getName().contains("s")));
		System.out.println(listMap);
  • 3.3 数据分组
Map<String, List<Person>> listMap = personList.stream()
		                                              .collect(Collectors.groupingBy(p -> p.getSex()));
		System.out.println(listMap);

-3.4 字符串拼接

String names = personList.stream()
		                         .map(Person::getName)
		                         .collect(Collectors.joining("/", "[", "]"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值