你好杰米 2018-09-07 03:25 采纳率: 87.5%
浏览 13674
已采纳

【java8】stream的map和filter怎么混用?

 List<SoReturnPicVO> collect = picList.stream().filter(x -> x.getType() == 1).collect(Collectors.toList());
            List<String> collect2 = collect.stream().map(x -> x.getPicUrl()).collect(Collectors.toList());

我要将实体里的一个字段取出来List-String,但是要根据另一个字段进行判断,我写成了两句,请问怎么能把这两句合并一下,写成一句

  • 写回答

3条回答 默认 最新

  • oyljerry 2018-09-07 05:51
    关注
     picList.stream().filter(x -> x.getType() == 1).map(x -> x.getPicUrl()).collect(Collectors.toList());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 玄尺 2018-09-07 05:56
    关注
     public class UserModel {
    
        private String name;
    
        public UserModel(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "UserModel{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
    }
    
             UserModel userModel1 = new UserModel("1");
            UserModel userModel2 = new UserModel("2");
            UserModel userModel3 = new UserModel("3");
    
            List<UserModel> userModelList = new ArrayList<>();
            userModelList.add(userModel1);
            userModelList.add(userModel2);
            userModelList.add(userModel3);
    
            List<String> names = userModelList.stream().filter((item) -> {
                String name = item.getName();
                return Integer.valueOf(name) > 1;
            }).map(UserModel::getName).collect(Collectors.toList());
            System.out.println(names);
    
    评论
  • 路漫漫兮其修远兮 2018-09-07 08:54
    关注

    这个是先filter在map的

     List<String> collect2 = collect.stream().filter(x -> x.getType() == 1).map(x -> x.getPicUrl()).collect(Collectors.toList());
    

    先map在filter

     List<SoReturnPicVO> collect2 = collect.stream().map(x -> {
                                                                                                                        SoReturnPicVO so = new  SoReturnPicVO();
                                                                                                                        so.setPicUrl( x.getPicUrl());
                                                                                                                            so.setType( x.getType());
                                                                                                                        return so;
                                                                                                                })
                                                                                                    .filter(x -> x.getType() == 1).collect(Collectors.toList());
    

    这个时候集合里面是SoReturnPicVO,SoReturnPicVO对象里面只设置图片和类型两个字段的值。

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)
  • ¥30 如何在CMD中设置代理
  • ¥15 我有一块薛定谔的硬盘
  • ¥15 微信小游戏开发2D碰撞检测问题