当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

三种将list转换为map的方法

发表于: 2014-11-19   作者:jackyrong   来源:转载   浏览:
摘要:   在本文中,介绍三种将list转换为map的方法: 1) 传统方法 假设有某个类如下    class Movie { private Integer rank; private String description; public Movie(Integer rank, String des
  在本文中,介绍三种将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

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
参考文献:颜晶晶 张涛《将中缀表达式转换成后缀表达式的三种方法》 http://blog.csdn.net/glldc/ar
思想: 在web应用的构建中,若使用ajax对前台数据进行封装,成键值对的形式(如,保存在request中的值
转至:http://zhiwu88.blog.hexun.com/70623952_d.html 字号:大 中 小 很多时候我们看一个网页没看
转至:http://zhiwu88.blog.hexun.com/70623952_d.html 字号:大 中 小 很多时候我们看一个网页没看
这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示。我
本例效果图: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphi
1.Maven工程中主要添加的依赖 <!--处理excel、word--> <dependency> <groupId>or
1.Maven工程中主要添加的依赖 <!--处理excel、word--> <dependency> <groupId>or
PDFDownload Create, control and convert online PDF files 官网地址: http://www.pdfdownload.org
Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将jso
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号