如何将map<string list<>>转换成城map<string,object>

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将map<string list<>>转换成城map<string,object>相关的知识,希望对你有一定的参考价值。

/**
* 用于把List<Object>转换成Map<String,Object>形式,便于存入缓存
* @author zhang_bo
* @param keyName 主键属性
* @param list 集合
* @return 返回对象
*/
private <T> Map<String, T> listToMap(String keyName, List<T> list)
Map<String, T> m = new HashMap<String, T>();
try
for (T t : list)
PropertyDescriptor pd = new PropertyDescriptor(keyName,
t.getClass());
Method getMethod = pd.getReadMethod();// 获得get方法
Object o = getMethod.invoke(t);// 执行get方法返回一个Object
m.put(o.toString(), t);

return m;
catch (Exception e)
logger.error("Convert List to Map failed");
e.printStackTrace();

return null;
参考技术A list专object是自动的向上转型的不需要强转的,。 参考技术B 不能转换,但是你可以新建一个map把原来的迭代出来放进去

Java 8:将 Map<String, List<String>> 转换为 Map<String, String[]> [重复]

【中文标题】Java 8:将 Map<String, List<String>> 转换为 Map<String, String[]> [重复]【英文标题】:Java 8: Converting Map<String, List<String>> to Map<String, String[]> [duplicate] 【发布时间】:2020-03-17 10:33:27 【问题描述】:
Map<String, List<String>> parameters;

Map<String, String[]> collect = parameters.entrySet().stream()
                .collect(Collectors.toMap(entry-> entry.getKey(),entry -> entry.getValue().toArray()));

我收到编译器错误无法解析方法“getKey()”

【问题讨论】:

【参考方案1】:

您应该创建一个正确类型的数组(即 String[] 而不是 Object[]):

Map<String, String[]> collect = 
    parameters.entrySet()
              .stream()
              .collect(Collectors.toMap(Map.Entry::getKey,
                                        entry -> entry.getValue().toArray(new String[0])));

【讨论】:

【参考方案2】:

你必须使用:

.toArray(String[]::new)

而不仅仅是:

.toArray()

因为这个返回 Object[] 而不是 String[]

正如 cmets 中所讨论的,我的解决方案可以从 Java11 开始有效

【讨论】:

以上是关于如何将map<string list<>>转换成城map<string,object>的主要内容,如果未能解决你的问题,请参考以下文章

如何把list<map> 变成list<string>

如何将两个List<Map<String,Object>>合并为一个

如何将地图 List<Map<String, String>> myList 列表转换为 Java 中的 Spark Dataframe?

如何将 List<Map<String,dynamic> 转换为 Dart 中的单个变量?

颤振-如何将 Map<dynamic.dynamic> 转换为 List<String>

java Map<String,ArrayList<String>> 如何转化为Map<String,List<String>>?