List转Map的三种方法

2023-10-28

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));

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

List转Map的三种方法 的相关文章

  • 如何在 Jupyter Notebook 内的 conda 环境中使用特定的 Java 版本

    我的总体目标是使用sparklyr在 Jupyter 实验室的 Azure 云服务上的 R Jupyter 笔记本中 我使用 R sparklyr 和 Java 8 创建了一个新的 conda 环境 因为这是 Sparklyr 支持的版本
  • 切换大小写错误。用于 Mac 上 Android 开发的 Eclipse IDE:将工作区合规性更改为 JRE 1.7

    当尝试在 android 项目中使用带有 switch string 的 Switch Case 时 我在 eclipse IDE 中收到错误消息 将工作区合规性更改为 JRE1 7 对于低于 1 7 的源级别 无法打开字符串类型的值 仅允
  • Flink Kafka - 如何使应用程序并行运行?

    我正在 Flink 中创建一个应用程序 读取某个主题的消息 对其进行一些简单的处理 将结果写入不同的主题 我的代码确实有效 然而它不并行运行我怎么做 看来我的代码只在一个线程 块上运行 在 Flink Web 仪表板上 应用程序进入运行状态
  • 为什么java中的BigInteger被设计成不可变的?

    在 java 中 BigInteger 是不可变的 但我想了解为什么 因为很多时候它用于进行大量计算 从而产生大量对象 所以 不让它变得不可变感觉有点直观 我想到的情况类似于字符串操作 然后是 StringBuilder 的选项 是否应该有
  • Java用逗号或点和两个小数值验证价格[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 验证必须用点或逗号表示价格值且最多具有两位小数值的字符串的最佳方法和解决方案是什么 RegExp java text DecimalFor
  • 理解 Spring AOP [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Spring 3 0 框架 但仍然是新手 谁能通俗地解释一下什么是AOP编程 一个简短的例子肯定会有帮助 Spring 如
  • Java 可以启动 Windows UAC 吗?

    正如标题所说 我想知道用 Java 编写的程序是否可能 并且只有java 以管理员权限重新启动自己 最好是 jar 以本机 Windows UAC 的方式显示 为了使其对用户更可信 我做了功课 发现可以使用来完成此操作C 和 Java 之间
  • Spring 3.1 Java配置和内部bean

    Bean public TimedRepository timedRepository RealRepository repo return new TimedRepository repo timer Adds some metrics
  • 如何从 Android 服务获取应用程序上下文?

    我有一个正在运行并监听麦克风输入的 Android 服务 我希望它在满足特定条件时启动一项活动 为了创建意图 我需要应用程序上下文 我怎么才能得到它 Intent i new Intent ctx SONR class i addFlags
  • JavaFX 多线程 - 连接线程不会更新 UI

    我正在尝试创建一个加载程序对话框 用户可以在其中知道程序正在加载所请求的内容并且程序正在按预期运行 但正因为如此 我需要join 解析器线程和之前继续主线程 这使得对话框空白 解析器任务 java public class ParserTa
  • Android O - 通知通道和NotificationCompat

    我无法改变这种感觉 Android 开发人员再次提出了一些新东西 却让每个人都对他们如何看待该功能的使用一无所知 我说的是 Android O 中的通知通道 多年来 我一直使用兼容性支持库来避免处理特定平台的细节 即 Notificatio
  • Apache James 学习资源 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 该计划是创建一个列表阿帕奇 詹姆斯 http james apache org学习资源 涉及从设置到使用
  • 使用可变参数绘制星形

    我的任务是编写程序 允许用户绘制星星 星星的大小和手臂数量可能不同 当我处理基本星时 我使用 GeneralPath 和点表进行处理 int xPoints 55 67 109 73 83 55 27 37 1 43 int yPoints
  • 从字符串中删除特定字符[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何从字符串中删除特定字符 我有一个 Arraylist 测试数组 String line testingarray get index
  • Rmi 错误 IllegalArgumentException、MarshalException

    为所有人上课 package Task2 import java rmi RemoteException import java rmi server UnicastRemoteObject public class IdCl extend
  • ACTION_MEDIA_BUTTON 的广播接收器不起作用

    我正在为 Android 操作系统版本 4 0 3 ICS 编写 Android 应用程序 问题是我没有从 BroadcastReceiver 的 onReceive 方法中的 Log d 获得输出 这意味着我的应用程序没有正确处理广播 我
  • Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?

    通过使用 selenium 我可以访问位于检查选项卡中的浏览器元素选择器 在浏览器中按 Ctrl Shift C 吗 我想使用该选择器 指向 一个元素 并使其在浏览器中突出显示 例如 简单的事情如下 WebElement elem driv
  • web.xml 过滤器如何工作?您可以将两个过滤器映射到所有页面 (/*) 并指定顺序吗?

    我想使用 Spring Security 它说将过滤器映射到 但我已经有一个映射到 的过滤器 即 Tuckee URLRewrite 过滤器 是否可以将两个过滤器映射到同一事物 并且有没有办法指定过滤器的调用顺序 是的你可以 servlet
  • 为什么 pagefactory 类在从另一个类初始化时返回 null

    在我的测试课上 我有DesiredCapabilities为 Appium 测试设置 在该课程中 我初始化了 BasePage 课程pagefactory元素 当我运行测试时 它按预期工作 现在 我尝试将 DesiredCapability
  • Spring Boot 应用程序崩溃

    请告诉我哪里有问题 我尝试启动我的第一个在 Spring Boot 上开发的应用程序 我已经在 SpringMVC 上有了简单的 Web 项目 现在我喜欢在 BOOT 上构建它 这是错误输出 org springframework bean

随机推荐

  • python免费课程全套-为了学习Python,我汇总了这10个免费的视频课程!

    毫无疑问 Python是目前世界上 的编程语言 它 的优势在于它将越多越多的人带入了编程领域 近年来 学习Python的人比学习其他任何语言的人都多 许多人学Python是为了它背后的数据科学和机器学习库 当然 也有一些人学习用于Web开发
  • Java Web 安全之CSRF

    概念 跨站请求伪造 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法 原理 用户登陆A网站 A网站确认身份 B网站页面向A网站发起请求 带A网站身份 危害 利用用户登陆态 盗取用户资金 转账 消费 用户不知情 冒充用户
  • R语言tidyr包数据变换函数(dplyr包组合使用,完美)

    日常的数据预处理中 不可避免的会遇到数据的各种变形 转换 R语言中的tidyr包函数解决了数据变形上的问题 变量 列的转换 1 宽数据变长数据 gather data key key value value na rm FALSE conv
  • win10 vs2015 freetype2编译

    01 FreeType FreeType库是一个完全免费 开源 的 高质量的且可移植的字体引擎 它提供统一的接口来访问多种字体格式文件 包括TrueType OpenType Type1 CID CFF Windows FON FNT X1
  • 从Linux内核源码到操作系统

    Linux源码只有运行起来才能成为操作系统 否则她只能静静的躺在存储介质上沉睡 本文就讲解如何将这个睡美人唤醒 唤醒后给他穿上旗袍她就成为RedHat 给她换上包臀裙她就成为SUSE 再或者给她换上超短裙 她就成为Ubuntu 总之就是你可
  • 你在用FastReport.Net报表工具做报表没

    博主文章仅用于学习 研究和交流目的 不足和错误之处在所难免 希望大家能够批评指出 博主核实后马上更改 一 FastReport 是什么 FastReport Net是一款适用于Windows Forms ASP NET和MVC框架的功能齐全
  • 3DMAX机械建模贴图教程

    1 大型机械模型 网上找图片 然后放进材质球 应用 查看图片 裁剪好 然后把材质球放在模型之上 然后点击绿色 讲材质放给制定对象 2 加VR 太阳光 0 02 3 贴图贴上不行 点击UV贴图 选择长方体啥的 想要好看 加V RAY渲染器 测
  • json序列化小驼峰格式(属性名首字母小写)

    引用Newtonsoft Json 只需要设置JsonSerializerSettings参数即可 using Newtonsoft Json using System namespace ItemDemo class Program st
  • VUE项目开发,使用jessibuca——实现直播流播放器

    VUE项目开发 使用jessibuca 实现直播流播放器 VUE项目开发 使用jessibuca 实现直播流播放器 效果图 插件目录 public index html页面引入 组件一 组件二 补充内容 加载多个视频 参考连接 VUE项目开
  • 【D3.js - v5.x】(6)绘制树状图

    树状图 在d3 中 绘制树状图 要用到层级布局这个概念 d3 hierarchy data children 根据指定的层次结构数据构造一个根节点 指定的数据 data 必须为一个表示根节点的对象 比如 name Eve children
  • Ceph主要概念

    目录 1 整体架构介绍 1 1 总体介绍 1 2 整体架构 2 集群管理 2 1 Monitor 2 2 心跳管理 3 数据读写 3 1 OSD 3 2 读写流程 3 3 POOL和PG 3 4 CRUSH算法 3 4 1 Straw算法
  • win10下安装redis

    转载 https www cnblogs com W Yentl p 7831671 html Window 下安装 下载地址 https github com MSOpenTech redis releases Redis 支持 32 位
  • [matlab数字图像处理10]对一副图像进行二值化,ostu算法等

    一 问题描述 对一副图像进行二值化 ostu算法等 二 求解思路 将图像利用imread和rgb2gary后转化为灰度图像 对于直接的二值化 可使用0 5作为阈值 大津法 OTSU 是一种确定图像二值化分割阈值的算法 由日本学者大津于197
  • 苹果手机照片删除了怎么恢复回来

    苹果手机是现代人生活中必备的工具之一 很多小伙伴们会通过它来存储重要的照片和视频 但是 有时候不小心把照片删除了 这可能会导致很多人不知道该怎么办 那些苹果手机照片删除了怎么恢复回来呢 本文将为大家介绍几种简单的方法来恢复被删除的苹果手机照
  • linux脚本学习小记(1)

    linux脚本学习小记 1 1 输出信息 bin bash Program This program is used to show Hello World in screen PATH bin sbin usr bin usr sbin
  • 怎么删除计算机c盘应用,C盘垃圾文件怎么删除,清理系统盘的电脑软件-腾讯电脑管家...

    不知道大家有没有注意过 C盘总是会越用越小 这是因为大部分的系统缓存文件都默认存储在C盘 还有就是系统的升级以及换代 新系统的安装包或者旧系统的残留文件依然会保存在C盘 这也无形中增大了C盘的容量 那么这些垃圾要怎么清理呢 有没有什么软件或
  • Pyecharts Graph 关系图示例

    关系可视化 from pyecharts import options as opts from pyecharts charts import Graph from pyecharts globals import ThemeType i
  • 实现一个函数,判断一个数是不是素数。

    我们先来看一下素数的定义 素数定义为在大于1的自然数中 除了1和它本身以外不再有其他因数 用普通代码实现 define CRT SECURE NO WARNINGS include
  • vs2010中引入boost库

    引言 在vs2010中无法使用C 11中的大多数特性 像mutex互斥锁 要想使用需要引入boost库 下面记录一下boost库引入到vs2010中 实现 分为以下几步 下载boost压缩包 可以采用下面的地址下载适合自己的版本 下载地址
  • List转Map的三种方法

    for循环 import com google common base Function import com google common collect Maps import java util ArrayList import jav