LinkedHashMap如何转对象的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinkedHashMap如何转对象的问题相关的知识,希望对你有一定的参考价值。

参考技术A 使用Feign调用其他服务的时候,想要将返回数据强转为对象

结果发现出现异常:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to ********************

使用Map<String,Object> map = data,然后使用map.get()来获取里面的值。

注意:如果有多个字段的话,不建议使用这样来做,太傻了。

使用阿里的fastJson来将这个linkedHashMap转换成对象。

访问 LinkedHashMap 中最后一个对象中的方法

【中文标题】访问 LinkedHashMap 中最后一个对象中的方法【英文标题】:Accesing a method in the last object in a LinkedHashMap 【发布时间】:2018-10-14 03:44:50 【问题描述】:

我有一个 LinkedHashMap,其中包含一个位于 key 的对象和一个位于 value 的对象。

我用过代码

yourShots.keySet().toArray()[yourShots.size()-1]

返回keys 的最后一个对象。但是,我无法访问该对象具有的方法。

我已使用getClass() 方法确定我确实拥有正确的对象类型,但无法调用该方法。我只是得到了找不到方法的错误。

我做错了吗?

【问题讨论】:

你是说你试图调用的方法是在键/值的 value 对象上,而不是 key 对象上Map?中的对? 你能显示你将结果分配给哪个变量以及 yourShots 的声明吗? 如果知道key,就不需要构造数组 显示更多代码。 yourShots 是如何定义的?也许你需要一个演员...... @Andreas 没有。方法在key对象中。 【参考方案1】:

toArray 给你通用的Object 类型。在使用它之前,您必须将其转换为您的 key 类。

KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
// Here you can access your desired method

编辑:

正如@rgettman 建议的那样,您可以使用重载版本toArray(T[]) 来避免强制转换。在这种情况下,您应该预先提供一个大小为keySet() 的初始化数组。

【讨论】:

或者您可以使用重载Set.toArray(T[]) 来避免强制转换。【参考方案2】:

或者,您可以使用Iterator 来避免将所有不需要的键复制到数组中,然后再将其丢弃。由于是通用的,它还节省了演员表。

Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) 
    key = iterator.next();

【讨论】:

【参考方案3】:

编辑: 您可以将keySet 转换为List,然后获取最后一个对象。 像这样的:

List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);

原帖 您正在访问错误的方法。

yourShots.keySet() 返回一个包含Map 中所有键的Set

要访问地图中的最后一个值,您需要调用:yourShots.values()

希望对你有帮助

【讨论】:

谢谢,但我不想得到最后一个值。我正在尝试获取最后一个密钥。 对不起,我误解了你的问题,让我更新我的答案。

以上是关于LinkedHashMap如何转对象的问题的主要内容,如果未能解决你的问题,请参考以下文章

linkedhashmap如何输出最后几条记录

如何将 LinkedHashMap 转换为自定义 java 对象?

如何从 Kotlin Android 中的 LinkedHashMap 手动获取第一和第二位置的对象?

微服务远程调用返回linkedhashMap对象

LinkedHashMap转ArrayList

LinkedHashMap和HashMap的比较使用(转)