有没有一个方法就能搞定的?
网上只有数组跟list、arraylist的转换。
ArrayList是List接口的一个实现,不用相互转化吧。
http://www.cnblogs.com/isItOk/p/5966383.html
ArrayList是List接口的子类。
List不能转为ArrayList
List stringlist=new ArrayList();用之前就定义啊
List 是接口,ArrayList是List的实现类,你到底要干什么?
请重新审视你的问题
直接强转,去查一下向下强转的资料
用as 试试 C#好像可以这样 java不太清楚
ArrayList & LinkedList
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
ArrayList是list的实现类,直接新建就可以了
List是接口,ArrayList是List的实现类
虽然这个需求很奇葩,但是我还是给你写一个实现;
希望对你有帮助...
/**
* 将未知类型list转成arraylist
* @param orig
* @param <T>
* @return
*/
public static <T> ArrayList<T> convertListToArrayList(List<T> orig) {
//如果为null直接返回,这里也可以把size=0加上
if (null == orig) return null;
if (orig instanceof ArrayList) {//判断是否就是ArrayList,如果是,则强转
return (ArrayList)orig;
} else {
ArrayList<T> returnValue = new ArrayList<>(orig.size());
for (T t : orig) {
returnValue.add(t);
}
//jdk1.8及以上可以使用这样的循环遍历
//orig.forEach(t -> returnValue.add(t));
return returnValue;
}
}
ArrayList是继承自List,通过向上转型可以把ArrayList转为List
ArrayList是List接口的子类。
List不能转为ArrayList
ArrayList是list的实现类,List是接口,实现就可以了。
new ArrayList<>(list);