Stream流 学习内容

之前没有接触过stream流,所以在处理集合方面效率太低,代码写的也多,所以准备学习一下stream流来提高一下自己。

我对stream流的理解就是可以在很多地方省去for循环的步骤,会用以后也很方便,无非就是方法的调用。

  1. 首先创建一个实体类,也有getset方法,这里列出来的话太多了就省略掉了。

public class Person {

private String name;

private Integer age;

private String sex;

public Person(String name, Integer age, String sex) {

this.name = name;

this.age = age;

this.sex = sex;

}

}

  1. Stream流添加元素。

如果创建List添加。

public static void main(String[] args) {

Person person1 = new Person("qqq",20,"男");

Person person2 = new Person("www",21,"女");

Person person3 = new Person("eee",22,"男");

Person person4 = new Person("rrr",23,"女");

List<Person> personList = new ArrayList<>();

personList.add(person1);

personList.add(person2);

personList.add(person3);

personList.add(person4);

}

这样增加代码量,影响效率。

如果用stream流的话。

List<Person> personList1 = Stream.of(person1, person2, person3, person4).collect(Collectors.toList());

一行就可以解决

  1. 获取对象的某一列 将集合中的某个属性的值添加到一个list中。

用List。

List<String> personList1 = new ArrayList<>();

for (Person person : personList) {

personList1.add(person1.getName());

personList1.add(person2.getName());

personList1.add(person3.getName());

personList1.add(person4.getName());

}

用Stream流。

List<String> list = personList.stream().map(Person::getName).collect(Collectors.toList());

  1. 过滤掉不需要的元素。

用list。

List<Person> personList2 = new ArrayList<>();

for (Person person : personList) {

if (person.getAge()!=null){

personList2.add(person);

}

}

用stream。

List<Person> list1 = personList.stream().filter(p -> p.getAge() != null).collect(Collectors.toList());

  1. 分组 将元素按性别分组

Map<String, List<Person>> collect = personList.stream().collect(Collectors.groupingBy(Person::getSex, Collectors.toList()));

  1. list和map的转换。

list->map

Map<String, Person> map = personList.stream().collect(Collectors.toMap(Person::getName, Function.identity(), (key, key1) -> key1));

其中,(key,key1)->key1 的作用是处理重复的key,将key1覆盖到key,之前用stream流的时候没有用到这个,最近在学习的时候才注意到。

map->list

List<Person> personList3 = map.entrySet().stream().map(e -> e.getValue()).collect(Collectors.toList());

拿到map的value值转为list。

在实习阶段我用list转map 和分组用的比较多,如果有用到for循环的一般是还要处理其中的元素。

以上就是我最近学习的stream流,如果有错误欢迎指出。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给我拿一个小汉堡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值