List转Map_三种不退转

List转Map_三种不退转List转Map三种方法。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

for循环


import com.google.common.base.Function;
import com.google.common.collect.Maps;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListToMap {
    public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        User user1 = new User();
        user1.setId(1L);
        user1.setAge("12");

        User user2 = new User();
        user2.setId(2L);
        user2.setAge("13");

        userList.add(user1);
        userList.add(user2);

        Map<Long, User> maps = new HashMap<>();
        for (User user : userList) {
            maps.put(user.getId(), user);
        }

        System.out.println(maps);

    }

    public static class User {
        private Long id;
        private String age;

        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", age='" + age + '\'' +
                    '}';
        }
    }
}



使用guava


 Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, Long>() { 
   
            @Override
            public Long apply(User user) { 
   
                return user.getId();
            }
   });

使用JDK1.8


Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId,Function.identity()));

看来还是使用JDK 1.8方便一些。另外,转换成map的时候,可能出现key一样的情况,如果不指定一个覆盖规则,上面的代码是会报错的。转成map的时候,最好使用下面的方式:

Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));

有时候,希望得到的map的值不是对象,而是对象的某个属性,那么可以用下面的方式:

Map<Long, String> maps = userList.stream().collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197399.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm每次新建项目都要重新安装一些第三方库解决办法

    pycharm每次新建项目都要重新安装一些第三方库解决办法目前有三个解决办法,也是亲测有用的:第一个方法:因为之前有通过pycharm的projectinterpreter里的+号添加过一些库,但添加的库只是指定的项目用的,如果想要用,就必须用之前的项目的python解释器,举个例子:这个是我之前的项目的解释器,这个项目解释器是继承的python的解释器,同时又安装了上面你看到的这些库,包含numpy和opencv-python等,然后我新…

  • mac下配置android开发环境

    1.安装java环境oracle官网下载java就可以,链接http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=ocomen我下载的是java72.安装adt-bundle形式的android开发环境由于google现在极力推广他的android studio,官网貌似已经把eclips

  • 初中英语语法(003)-be动词和一般动词的一般过去式

    初中英语语法(003)-be动词和一般动词的一般过去式be.动词和一般动词的过去式1、什么是过去式:当一个状态是当前的状态,或者一个动作发生在现在,那么就是现在时,动词要用现在式。当一个动作发生在过去,或者一个状态是过去的状态,现在已经没有了,那么就是过去时,动词要用过去式。因此,过去式用于过去的时间的状态和发生的事件。2、be.动词的过去式:be.动词的变化规则:am/is=&amp;gt;was,are=&amp;gt;were当时间副词改变的…

  • 基尼系数直接计算法_基尼系数简单的计算方法

    基尼系数直接计算法_基尼系数简单的计算方法使用两种方法,通过python计算基尼系数。在sql中如何计算基尼系数,可以查看我的另一篇文章。两篇文章取数相同,可以结合去看。文章中方法1的代码来自于:(加入了一些注释,方便理解)。为精确计算。如果对于基尼系数概念不太清楚,可以看原文的第一部分。http://www.cnblogs.com/longwind09/p/8047539.html方法2和3借鉴资料:方法2和3…

    2022年10月13日
  • linux将时间戳转换为时间_shell脚本获取时间戳

    linux将时间戳转换为时间_shell脚本获取时间戳虽然电脑已经很普遍了,但是一些年长的人对电脑的操作不是很熟悉,比如在使用win7系统时一旦遇到linux时间戳转换时就懵了,对于linux时间戳转换处理起来相对来说较简单,按照我们的步骤处理linux时间戳转换很容易上手,linux时间戳转换具体处理方法如下:Unix时间戳转换怎样在Excel批量修改答:Linux的时间戳其实就是从1970年1月1日0时0分0秒开始到对应时间的秒数,转换可以在当前…

  • Centos镜像国内最全下载地址

    Centos镜像国内最全下载地址这里写代码片CentOS7官方下载地址:https://www.centos.org/download/Centos国内下载源http://man.linuxde.net/download/CentOShttp://mirrors.btte.net/centos/7/isos/x86_64/http://mirrors.cn99.com/centos/7/isos/x86_64/h…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号