黑马程序员技术交流社区
标题:
类集中的问题,复制元素!!
[打印本页]
作者:
心?=忐§忑]
时间:
2014-4-13 22:12
标题:
类集中的问题,复制元素!!
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String args[]){
List<String> allList = new ArrayList<String>() ;
List<String> twoList = new ArrayList<String>() ; //重新开辟空间
allList.add("A") ;
allList.add("B") ;
allList.add("C") ;
allList.add("D") ;
allList.add("E") ;
Collections.addAll(allList,"F","G","H") ;
Collections.sort(allList) ;
System.out.println(allList) ;
// List twoList = new ArrayList<String>() ; //此处该怎么定义
Collections.copy(twoList,allList) ;
System.out.println(twoList) ;
}
}
作者:
赵连明
时间:
2014-4-13 22:32
<p>import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String args[]){
List<String> allList = new ArrayList<String>() ;
List<String> twoList = new ArrayList<String>() ; //去掉没用的
allList.add("A") ;
allList.add("B") ;
allList.add("C") ;
allList.add("D") ;
allList.add("E") ;
Collections.addAll(allList,"F","G","H") ;
Collections.sort(allList) ;
System.out.println(allList) ;
// List twoList = new ArrayList<String>() ;</p><p>这里用List twoList=allList; 或 </p><p>List<String> twoList = new ArrayList<String>(Arrays.asList(new String[allList.size()])); 都行</p><p>
Collections.copy(twoList,allList) ;
System.out.println(twoList) ;
}
}</p>
复制代码
如果你非要保留 List<String> twoList = new ArrayList<String>() ;
那下面复制用这代码也行
for(int i=0; i<allList.size(); i++)
{ twoList.add(allList.get(i)); }
作者:
徘徊消逝中
时间:
2014-4-14 00:16
lz遇到的是src dest长度不一致,从抛出的异常可以看出
Exception in thread "main" [A, B, C, D, E, F, G, H] java.lang.IndexOutOfBoundsException
查看api帮助文档可知道,Arraylist的capacity(容纳能力大小)可以指定(最好指定)。而初始化时size的大小永远默认为0,只有在进行add和remove等相关操作 时,size的大小才变化。然而进行copy()时候,首先做的是将dest的size和src的size大小进行比较,只有当dest的 size 大于或者等于src的size时才进行拷贝,否则抛出IndexOutOfBoundsException异常
故,lz可以这样处理,两种办法,如下
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class CollectionsDemo {
/*
//法1. 初始化是指定长度
public static void main(String args[]){
List<String> allList = new ArrayList<String>() ;
allList.add("A") ;
allList.add("B") ;
allList.add("C") ;
allList.add("D") ;
allList.add("E") ;
Collections.addAll(allList,"F","G","H") ;
Collections.sort(allList) ;
System.out.println(allList) ;
List<String> twoList = new ArrayList<String>(Arrays.asList(new String[allList.size()])) ;
//重新开辟空间,根据allList长度定义
Collections.copy(twoList,allList) ;
System.out.println(twoList) ;
}
*/
//法2.先不定义长度,默认为0
public static void main(String args[]){
List<String> allList = new ArrayList<String>() ;
List<String> twoList = new ArrayList<String>() ; //重新开辟空间
allList.add("A") ;
allList.add("B") ;
allList.add("C") ;
allList.add("D") ;
allList.add("E") ;
Collections.addAll(allList,"F","G","H") ;
Collections.sort(allList) ;
System.out.println(allList) ;
//复制之前,先为twoList追加长度,利用add方法
Collections.addAll(twoList, new String[allList.size()]);
Collections.copy(twoList,allList) ;
System.out.println(twoList) ;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2