java 三种将list转换为map的方法详解
java三种将list转换为map的方法详解
在本文中,介绍三种将list转换为map的方法:
1)传统方法
假设有某个类如下
classMovie{
privateIntegerrank;
privateStringdescription;
publicMovie(Integerrank,Stringdescription){
super();
this.rank=rank;
this.description=description;
}
publicIntegergetRank(){
returnrank;
}
publicStringgetDescription(){
returndescription;
}
@Override
publicStringtoString(){
returnObjects.toStringHelper(this)
.add("rank",rank)
.add("description",description)
.toString();
}
}
使用传统的方法:
@Test
publicvoidconvert_list_to_map_with_java(){
List<Movie>movies=newArrayList<Movie>();
movies.add(newMovie(1,"TheShawshankRedemption"));
movies.add(newMovie(2,"TheGodfather"));
Map<Integer,Movie>mappedMovies=newHashMap<Integer,Movie>();
for(Moviemovie:movies){
mappedMovies.put(movie.getRank(),movie);
}
logger.info(mappedMovies);
assertTrue(mappedMovies.size()==2);
assertEquals("TheShawshankRedemption",mappedMovies.get(1).getDescription());
}
2)JAVA8直接用流的方法:
@Test
publicvoidconvert_list_to_map_with_java8_lambda(){
List<Movie>movies=newArrayList<Movie>();
movies.add(newMovie(1,"TheShawshankRedemption"));
movies.add(newMovie(2,"TheGodfather"));
Map<Integer,Movie>mappedMovies=movies.stream().collect(
Collectors.toMap(Movie::getRank,(p)->p));
logger.info(mappedMovies);
assertTrue(mappedMovies.size()==2);
assertEquals("TheShawshankRedemption",mappedMovies.get(1).getDescription());
}
3)使用guava工具类库
@Test
publicvoidconvert_list_to_map_with_guava(){
List<Movie>movies=Lists.newArrayList();
movies.add(newMovie(1,"TheShawshankRedemption"));
movies.add(newMovie(2,"TheGodfather"));
Map<Integer,Movie>mappedMovies=Maps.uniqueIndex(movies,newFunction<Movie,Integer>(){
publicIntegerapply(Moviefrom){
returnfrom.getRank();
}});
logger.info(mappedMovies);
assertTrue(mappedMovies.size()==2);
assertEquals("TheShawshankRedemption",mappedMovies.get(1).getDescription());
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短