异常转化问题: java.util.LinkedHashMap$LinkedValues cannot be cast to java.util.ArrayList

本文介绍如何将Map中的值集合转换为List。通过使用ArrayList的构造器,可以避免因类型转换错误导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用map中的的map.values()方法返回值,返回类型是Collection,后面在接收的时候使用List进行的强转,

例如:

public Collection<CartItem> getItems() {
        return map.values();
    }

List<CartItem> cartItemList = (ArrayList<CartItem>) cart.gettems();

 

就会出现该异常:

java.util.LinkedHashMap$LinkedValues cannot be cast to java.util.ArrayList

解决:

其实在ArrayList中有一个构造器可以用构造器来接受Collection

ArrayList(Collection<? extends E> c)
Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.

即上面的例子改完之后就是如下:

List<CartItem> cartItemList = new ArrayList<CartItem> (cart.getItems());

问题就解决了

 

这个错误是因为你尝试将一个 `java.util.LinkedHashMap` 类型的对象转换成 `net.sf.json.JSON` 类型,造成了类型转换错误。 通常情况下,将一个对象转换成 JSON 格式的字符串,可以使用 `net.sf.json.JSONObject` 或 `net.sf.json.JSONArray` 类来操作,它们提供了丰富的方法来构建和操作 JSON 对象和数组。 你可以试试下面的代码,使用 `JSONObject` 将 `java.util.LinkedHashMap` 类型的对象转换成 JSON 字符串: ```java import net.sf.json.JSONObject; import java.util.LinkedHashMap; import java.util.Map; public class Demo { public static void main(String[] args) { Map<String, Object> map = new LinkedHashMap<>(); map.put("name", "张三"); map.put("age", 18); JSONObject json = JSONObject.fromObject(map); System.out.println(json.toString()); } } ``` 在上面的代码中,我们先使用 `LinkedHashMap` 创建了一个 Map 对象,然后使用 `JSONObject.fromObject()` 方法将其转换成 JSON 对象,并使用 `toString()` 方法将其转换成 JSON 字符串。 输出结果为: ``` {"name":"张三","age":18} ``` 如果你需要将一个包含多个键值对的对象转换成 JSON 字符串,可以使用 `JSONArray`,例如: ```java import net.sf.json.JSONArray; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class Demo { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map1 = new LinkedHashMap<>(); map1.put("name", "张三"); map1.put("age", 18); Map<String, Object> map2 = new LinkedHashMap<>(); map2.put("name", "李四"); map2.put("age", 20); list.add(map1); list.add(map2); JSONArray json = JSONArray.fromObject(list); System.out.println(json.toString()); } } ``` 在上面的代码中,我们创建了一个包含两个 `Map` 对象的列表,然后使用 `JSONArray.fromObject()` 方法将其转换成 JSON 数组,并使用 `toString()` 方法将其转换成 JSON 字符串。 输出结果为: ``` [{"name":"张三","age":18},{"name":"李四","age":20}] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值