java 三种将list转换为map的方法详解
作者:lqh 时间:2023-09-13 03:35:39
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());
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
标签:list,map
0
投稿
猜你喜欢
Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性
2023-08-24 03:49:59
Android中TimePicker与DatePicker时间日期选择组件的使用实例
2023-08-07 01:35:15
解析Java中的static关键字
2022-03-02 17:15:35
Java continue break制作简单聊天室程序
2022-12-20 01:23:01
elasticsearch分布式及数据的功能源码分析
2023-08-11 06:31:26
一键清除maven仓库中下载失败的jar包的实现方法
2023-08-13 03:43:59
spring的jdbctemplate的crud的基类dao
2022-05-30 13:05:17
java最新版本连接mysql失败的解决过程
2022-05-21 17:29:58
Springboot整合pagehelper分页功能
2021-12-14 15:53:48
Java针对ArrayList自定义排序的2种实现方法
2022-01-30 03:47:34
JAVA遍历Map集合的几种方法汇总
2021-09-01 12:34:07
Qt之调用C#的动态库的解决方法
2023-07-22 03:42:45
Java二维数组查找功能代码实现
2023-01-04 19:47:17
Mybatis动态调用表名和字段名的解决方法
2022-03-18 16:54:14
spring data jpa使用详解(推荐)
2022-06-19 05:22:17
Java排序之冒泡排序的实现与优化
2023-11-10 21:35:56
Java线程中的常见方法(start方法和run方法)
2023-11-16 17:41:32
spring mvc中@PathVariable / 带斜杠方式获取
2022-09-15 04:47:27
java基础之NIO介绍及使用
2022-06-07 11:30:14
java中fork-join的原理解析
2023-12-13 08:49:16