java 三种将list转换为map的方法详解
這篇文章主要介紹了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的方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宁波银行信用卡年费
- 下一篇: 房贷lpr利率是什么意思 注意它的计算