java 三种将list转换为map的方法详解
更新时间:2017年01月24日 08:48:03 投稿:lqh
这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下
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());
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
解决Maven无法下载2.1.7.js7版本的itext依赖问题
本文主要解决使用Maven编译项目时出现的itext依赖版本问题,通过分析,发现该问题是由jasperreports依赖的特定版本itext导致的,解决方法是排除jasperreports中的itext依赖,并自行指定更高版本的itext依赖2024-12-12
出现java.util.ConcurrentModificationException 问题及解决办法
这篇文章主要介绍了出现java.util.ConcurrentModificationException 问题及解决办法的相关资料,需要的朋友可以参考下2017-02-02
Java并发编程之栅栏(CyclicBarrier)实例介绍
这篇文章主要介绍了Java并发编程之栅栏(CyclicBarrier)实例介绍,栅栏类似闭锁,但是它们是有区别的,需要的朋友可以参考下2015-04-04


最新评论