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

作者:lqh 时间:2023-09-13 03:35:39 

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

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

1) 传统方法

假设有某个类如下 


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

    使用传统的方法:   


@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直接用流的方法:  


@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 工具类库 


@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());
}

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

标签:list,map
0
投稿

猜你喜欢

  • Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性

    2023-08-24 03:49:59
  • Android中TimePicker与DatePicker时间日期选择组件的使用实例

    2023-08-07 01:35:15
  • 解析Java中的static关键字

    2022-03-02 17:15:35
  • Java continue break制作简单聊天室程序

    2022-12-20 01:23:01
  • elasticsearch分布式及数据的功能源码分析

    2023-08-11 06:31:26
  • 一键清除maven仓库中下载失败的jar包的实现方法

    2023-08-13 03:43:59
  • spring的jdbctemplate的crud的基类dao

    2022-05-30 13:05:17
  • java最新版本连接mysql失败的解决过程

    2022-05-21 17:29:58
  • Springboot整合pagehelper分页功能

    2021-12-14 15:53:48
  • Java针对ArrayList自定义排序的2种实现方法

    2022-01-30 03:47:34
  • JAVA遍历Map集合的几种方法汇总

    2021-09-01 12:34:07
  • Qt之调用C#的动态库的解决方法

    2023-07-22 03:42:45
  • Java二维数组查找功能代码实现

    2023-01-04 19:47:17
  • Mybatis动态调用表名和字段名的解决方法

    2022-03-18 16:54:14
  • spring data jpa使用详解(推荐)

    2022-06-19 05:22:17
  • Java排序之冒泡排序的实现与优化

    2023-11-10 21:35:56
  • Java线程中的常见方法(start方法和run方法)

    2023-11-16 17:41:32
  • spring mvc中@PathVariable / 带斜杠方式获取

    2022-09-15 04:47:27
  • java基础之NIO介绍及使用

    2022-06-07 11:30:14
  • java中fork-join的原理解析

    2023-12-13 08:49:16
  • asp之家 软件编程 m.aspxhome.com