Java中Stream流的常见应用


private final static String YELLOW = "1";
private final static String WHITE = "2";
private final static String BLACK = "3";

@Data
@AllArgsConstructor
class Person{
    private String name;

    private Integer age;

    private String color;
}

@Test
public void streamTestMethod(){
    List<Person> personList = new ArrayList<>();
    personList.add(new Person("周星驰",55,YELLOW));
    personList.add(new Person("维塔斯",48,WHITE));
    personList.add(new Person("路德金",97,BLACK));
    personList.add(new Person("陈奕迅",65,YELLOW));
    personList.add(new Person("伍佰",56,YELLOW));

    //按照年龄排序
    //第一种写法
    //想要降序排列可以在comparing后加上.reversed()
    List<Person> orderByAge = personList.stream().sorted(Comparator.comparing(Person::getAge)).collect(Collectors.toList());
    //第二种写法
    List<Person> orderByAgeSecond = personList.stream().sorted(new Comparator<Person>() {
        @Override
        public int compare(Person o1, Person o2) {
            //其他属性亦是如此操作,且如果要升序排序的话,将减号两边调换位置即可
            return o1.getAge() - o2.getAge();
        }
    }).collect(Collectors.toList());

    //按照肤色分组,分组后即为肤色A->对应肤色为A的Person的list
    Map<String, List<Person>> colorMap = personList.stream().collect(Collectors.groupingBy(Person::getColor));

    //Map的遍历
    colorMap.forEach(
            (col,colList) -> {
                log.info("颜色{}对应person列表为{}",col,colList);
            }
    );


    //过滤出列表中年龄大于60的人
    List<Person> gtList = personList.stream().filter(person -> person.getAge() > 65).collect(Collectors.toList());

    //获取列表中所有人的名字并转为新的list
    List<String> nameList = personList.stream().map(person -> person.getName()).collect(Collectors.toList());

    //去重
    List<Person> collect = personList.stream().distinct().collect(Collectors.toList());

    //分页
    Integer current = 1; //当前页码
    Integer size = 10; //每页数量
    List<Person> pageList = personList.stream().skip((current - 1) * size).limit(size).collect(Collectors.toList());
    
        //构建对象中某两种属性的映射关系Map
        //构建person的名字和肤色的映射关系
        Map<String, String> nameColorMap = personList.stream().collect(Collectors.toMap(Person::getName, Person::getColor));
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值