1. 基本写法
最开始介绍的当然是最常见、最直观的写法,当然也是任何限制的写法
// 比如将下面的列表,按照字符串长度进行分组
List<String> list = new ArrayList<>();
list.add("hello");
list.add("word");
list.add("come");
list.add("on");
Map<Integer, List<String>> ans = new HashMap<>();
for(String str: list) {
List<String> sub = ans.get(str.length());
if(sub == null) {
sub = new ArrayList<>();
ans.put(str.length(), sub);
}
sub.add(str);
}
System.out.println(ans);
对于jdk8+,上面for循环中的内容可以利用Map.computeIfAbsent来替换,具体写法如下
for (String str : list) {
ans.computeIfAbsent(str.length(), k -> new ArrayList<>()).add(str);
}
当然既然已经是jdk1.8了,借助Stream的流处理,可以将上面的更一步进行简化,如下
Map<Integer, List<String>> ans = list.stream().collect(Co

本文详细介绍了Java中将List转换为Map的多种方法,包括基本写法、通用方法的实现,以及使用Guava的HashMultimap扩展知识点。通过示例代码展示了从 JDK 8 之前的传统方式到 JDK 8 引入的Stream API的简洁转换,以及如何构建一个泛型工具类来处理不同场景的转换需求。
最低0.47元/天 解锁文章

3891

被折叠的 条评论
为什么被折叠?



