如下代码:
Map<String,String> map = new HashMap<String,String>(); map.put("key1", "123"); map.put("key2", "456"); List<String> list = (List<String>)map.values();
进行转换的时候产生异常
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List
由于map.values()方法返回的是Collection类型,你不能把他强转成List类型
values()方法的源码如下:
public Collection<V> values() { Collection<V> vs = values; return (vs != null ? vs : (values = new Values())); }
解决办法:
List<String> alist = new ArrayList<String>(map.values());
此ArrayList的构造方法源码如下:
public ArrayList(Collection<? extends E> c) { elementData = c.toArray(); size = elementData.length; // c.toArray might (incorrectly) not return Object[] (see 6260652) if (elementData.getClass() != Object[].class) elementData = Arrays.copyOf(elementData, size, Object[].class); }
浙公网安备 33010602011771号