list泛型对象转map
时间: 2025-01-25 18:21:30 浏览: 20
将 Java List<T>
转换为 Map<K,V>
为了将List<T>
转换为Map<K,V>
,可以采用多种方式来实现这一目标。一种常见的方式是通过遍历列表中的每一个元素并将其键值对形式存入到新的映射中。
对于给定的List<T>
,如果希望基于某个字段作为键而另一个字段作为值创建Map<K,V>
,则可以通过如下所示的方法完成:
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Converter {
public static <T, K, V> Map<K, V> convertListToMap(List<T> list, KeyExtractor<T, K> keyExtractor, ValueExtractor<T, V> valueExtractor) {
Map<K, V> resultMap = new HashMap<>();
for (T item : list) {
K key = keyExtractor.extractKey(item);
V value = valueExtractor.extractValue(item);
resultMap.put(key, value);
}
return resultMap;
}
@FunctionalInterface
interface KeyExtractor<T, K> {
K extractKey(T t);
}
@FunctionalInterface
interface ValueExtractor<T, V> {
V extractValue(T t);
}
}
此代码定义了一个通用工具类Converter
以及两个函数式接口用于提取键和值[^1]。这允许灵活指定任何类型的输入列表项,并从中抽取所需的键和对应的值放入最终的结果映射里。
当处理具体业务逻辑时,可以根据实际需求调整上述模板内的细节部分,比如改变存储结构或自定义键/值获取规则等。
假设有一个具体的例子,其中存在一个名为Person
的对象列表,现在想要依据每个人的身份证号(idCardNo)建立索引来快速查找姓名(name),那么就可以这样做:
class Person {
private String idCardNo;
private String name;
// Getters and Setters...
}
// 使用示例
List<Person> personList = ... ; // 假设这里已经填充好了数据
Map<String, String> idNameMapping = Converter.convertListToMap(
personList,
p -> p.getIdCardNo(),
p -> p.getName()
);
System.out.println(idNameMapping); // 输出 {id1=name1, id2=name2...}
这段程序展示了如何利用前面提到的帮助器方法轻松地把特定实体对象组成的集合转化为字典表的形式以便于后续操作[^3]。
相关推荐


















