java8->list转map判空,分组

摘要:
userList=newArrayList<userList.add(user6);compMap=userList.stream().filter(e->“+a.getName();/*for(Objectobj;System.out.println(key+”;String;map=userList.stream(;
    /**
     * list转map/分组
     * @Author: Mr.li
     * @Date: 2020/9/8
     */
    @Test
    public void demo7() {
        List<User> userList = new ArrayList<User>() {
            {
                add(new User("付1", "男1", 20));
                add(new User("付1", "男", 20));
                add(new User("付2", "男", 21));
                add(new User("付3", "男", 22));
                add(new User("付4", "男", 23));
                add(new User("付5", "男", 24));
                add(new User(null, "男", 25));
            }
        };
        User user6 = new User("zhangsan", "男", 24);
        userList.add(user6);
        /** list 转map
         * 注意:要是key重复的话 会报错Duplicate key ....
         * key name  都是1
         * 可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
         */
        Map<String, Object> compMap = userList.stream().filter(e->e.getName()!=null).collect(Collectors.toMap(User::getName, a -> a.getAge() + "-->" + a.getName(), (k1, k2) -> k1));
        /*for (Object obj : compMap.keySet()) {
            String key = (String) obj;//取到每一个key值
            String value = (String) compMap.get(key);
            System.out.println(key + ":" + value);
        }*/
        compMap.forEach((k,v)->{
            System.out.println(k+":"+v);
        });


        /**
         * list中以某个属性分组,比如用name分组
         */
        Map<String, List<User>> map = userList.stream().filter(e->e.getName()!=null).collect(Collectors.groupingBy(User::getName));
        System.out.println("Map: "+map);
        System.out.println("User: "+ getUser(user6));
    }
    /**
     * 得到user
     * @Author: Mr.li
     * @Date: 2020/9/8
     */
    public User getUser(User user) {
        return Optional.ofNullable(user)
                .filter(u -> "zhangsan".equals(u.getName()))
                .orElseGet(() -> {
                    User user1 = new User();
                    user1.setName("zhangsan");
                    return user1;
                });
    }

result:

java8-&gt;list转map判空,分组第1张

免责声明:文章转载自《java8-&amp;gt;list转map判空,分组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nginx配置文件优化使用swiper.js实现移动端tab切换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

spark的bulkload报错及解决

需求 将HDFS上的数据解析出来,然后通过hfile方式批量写入Hbase(需要多列写入) 写入数据的关键api: rdd.saveAsNewAPIHadoopFile( stagingFolder, classOf[ImmutableBytesWritable], classOf[KeyValue],...

使用pandas处理大型CSV文件(转)

# -*- coding:utf-8 -*- ''' CSV 常用API 1)reader(csvfile[, dialect='excel'][, fmtparam]),主要用于CSV 文件的读取,返回一个 reader 对象用于在CSV 文件内容上进行行迭代。 参数: csvfile,需要是支持迭代(Iterat...

图片灯箱插件——lightBox

  该插件可以用圆角的方式展示选择中的图片,使用按钮查看上下张图片,在加载图片时自带进度条,还能以自动播放的方式浏览图片,调用格式如下: $(linkimage).lightBox({options}) 其中linkimage参数为包含图片的<a>元素名称,options为插件方法的配置对象。 例如,以列表的方式在页面中展示全部的图片,当用户...

MsBuild 入门

1.属性    PropertyGroup       $符号调用,可以在XML中传参数,也可以在命令行中传入参数。 D:msbuild est3.msbuild <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyG...

HTML Img标签 src为网络地址无法显示图片问题解决(https)

举例说明: <img src="https://pic.cnblogs.com/avatar/1549846/20191126100502.png" alt="加载失败"> 图片无法显示 只需要在<head>标签内添加 <meta name="referrer" content="no-referrer">就可以了 1...

桌面小部件开发

AppWidgetProvider是android提供实现桌面小部件的类,本质是一个广播,即BroadcastReceiver。是继承关系 开发步骤: 1.在res/layout/下新建一个XML文件,命令为widget.xml,名称和内容可以自定义 <?xml version="1.0" encoding="utf-8"?> <Lin...