这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下

java 三种将list转换为map的方法详解

在本文中,介绍三种将list转换为map的方法:

1) 传统方法

假设有某个类如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

class Movie {

   

  private Integer rank;

  private String description;

   

  public Movie(Integer rank, String description) {

    super();

    this.rank = rank;

    this.description = description;

  }

   

  public Integer getRank() {

    return rank;

  }

 

  public String getDescription() {

    return description;

  }

 

  @Override

  public String toString() {

    return Objects.toStringHelper(this)

        .add("rank", rank)

        .add("description", description)

        .toString();

  }

}

使用传统的方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Test

public void convert_list_to_map_with_java () {

   

  List<Movie> movies = new ArrayList<Movie>();

  movies.add(new Movie(1, "The Shawshank Redemption"));

  movies.add(new Movie(2, "The Godfather"));

 

  Map<Integer, Movie> mappedMovies = new HashMap<Integer, Movie>();

  for (Movie movie : movies) {

    mappedMovies.put(movie.getRank(), movie);

  }

   

  logger.info(mappedMovies);

 

  assertTrue(mappedMovies.size() == 2);

  assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());

}

2) JAVA 8直接用流的方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@Test

public void convert_list_to_map_with_java8_lambda () {

   

  List<Movie> movies = new ArrayList<Movie>();

  movies.add(new Movie(1, "The Shawshank Redemption"));

  movies.add(new Movie(2, "The Godfather"));

 

  Map<Integer, Movie> mappedMovies = movies.stream().collect(

      Collectors.toMap(Movie::getRank, (p) -> p));

 

  logger.info(mappedMovies);

 

  assertTrue(mappedMovies.size() == 2);

  assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());

}

3) 使用guava 工具类库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@Test

public void convert_list_to_map_with_guava () {

 

   

  List<Movie> movies = Lists.newArrayList();

  movies.add(new Movie(1, "The Shawshank Redemption"));

  movies.add(new Movie(2, "The Godfather"));

   

   

  Map<Integer,Movie> mappedMovies = Maps.uniqueIndex(movies, new Function <Movie,Integer> () {

     public Integer apply(Movie from) {

      return from.getRank(); 

  }});

   

  logger.info(mappedMovies);

   

  assertTrue(mappedMovies.size() == 2);

  assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:https://www.jb51.net/article/104114.htm

java 三种将list转换为map的方法详解相关推荐

  1. 三种将list转换为map的方法

    三种将list转换为map的方法 博客分类: JAVA相关 在本文中,介绍三种将list转换为map的方法: 1) 传统方法 假设有某个类如下 Java代码   class Movie { priva ...

  2. Java基础提升篇:equals()与hashCode()方法详解

    概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) public int hashCode() Object类是类继承 ...

  3. 解释linux中的三种重定向,Linux重定向及反弹shell详解

    这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x ...

  4. WCF中常见的几种Host,承载WCF服务的方法详解

    1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...

  5. java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

    一.简单工厂模式 概述   简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因 ...

  6. Java 集合List、Set、Map知识结构大全详解

    目录 概述 一.Collection 接口 (1)List列表 -- 有序.值可重复 (2)Set 集  -- 值不可重复 二.Map 接口 (1)HashMap --  无序 1.取模法 2.Has ...

  7. java 下拉列表 枚举_「Java三分钟」精准而优雅——枚举类详解

    关注我,每天三分钟,带你轻松掌握一个Java相关知识点. 1.为什么要用枚举 你在读一个老工程代码时,是否经常看见有几个类,里面放着成百上千的静态常量,场面相当恐怖,而且如果不加注释,很多你都不知道这 ...

  8. 三种开窗函数详细用法,图文详解

    开窗函数的详细用法 一,开窗函数的语法 二,从聚合开窗函数sum(score) over(partition by name )讲起 三,开窗函数之first_value,last_value,lea ...

  9. opencv 几种不同遍历图像像素的方法详解

    简述 我们在图像处理时经常会用到遍历图像像素点的方式,同样是遍历图像像素点,共有很多中方法可以做到:在这些方法中,有相对高效的,也有低效的:不是说低效的方法就不好,不同场景使用不同方法. 方法 下面将 ...

最新文章

  1. 域用户组成员 导出_隐私安全,黑客利用Mimikatz提取Windows用户凭证
  2. 固定资产增值和减值操作
  3. ustc小道消息20220107
  4. oracle 触发器 和 常用内置程序包
  5. oracle中imp命令具体解释
  6. 2 华为云闪付_教你区分信用卡刷卡、挥卡、插卡、云闪付等支付方式!
  7. 硬核软件开发者 30 多年的 11 条经验教训
  8. 银行计算机系统(第3版),清华大学出版社-图书详情-《银行计算机系统》
  9. MySQL存储过程 — 解析 XML 数据并实现插入操作
  10. hibernate 的session一级缓存
  11. 雅思c1语言等级,雅思分数各代表什么水平
  12. php 线性回归算法,线性回归方程计算器
  13. 信息安全工程师第二版考试大纲案例分析篇(建群网培)
  14. go 合并excel
  15. 服务器mtu值修改,更改服务器mtu值
  16. 无人机动力测试台:150kg级-Flight Stand 150
  17. centos7 后端部署文档
  18. mysql limit括号_MYSQL中LIMIT使用简介
  19. 如何阻止迅雷自动上传
  20. Hadoop环境搭建三 伪分布式

热门文章

  1. C++11智能指针shared_ptr、weak_ptr、unique_ptr用法
  2. C语言获取mysql表数据结构_【数据结构】实现顺序表(c语言)
  3. solidworks重建模型好慢_兄弟只能帮你到这了,SOLIDWORKS卡顿或许秘密就在这些选项里...
  4. 「Ubuntu: Conda」Conda相关命令
  5. Kafka分区分配策略(Partition Assignment Strategy)
  6. 1.12.Flink Kafka-Connector详解、Consumer消费策略设置、动态加载Topic、Consumers Offset 自动提交、Producer、容错等
  7. Eclipse中web项目部署至Tomcat步骤
  8. Struts2中的链接标签 s:url和s:a
  9. sudo apt install镜像_将Docker镜像安全扫描步骤添加到CI/CD管道
  10. C语言的预处理、编译、汇编、链接