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());
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短