欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java,

来源: javaer 分享于  点击 49024 次 点评:136

Java,


(1)废话:最近有点心不在焉,看这个知道一点,看那个也知道一点。在看看,这个也不会,那个也不会,纠结而又操蛋的人生。

(2)走着:需要一个JavaBean:TestVo.java只有一个字段name,这里就不把代码贴出来。

1、List->Array

 1 System.out.println("===============List转化为Array===============");
 2            List<String> list1 = new ArrayList<String>();
 3            list1.add("list_a");
 4            list1.add("list_b");
 5            String[] array1 = list1.toArray(new String[list1.size()]);
 6            System.out.println("array1="+Arrays.toString(array1));
 7            list1.clear();
 8            System.out.println("list1 clear()");
 9            System.out.println("list1.size=" + list1.size()+";array1.lenth="+array1.length);
10            if (array1.length == 2) {
11                System.out.println("List--->Array  for String : 深度copy");
12            } else {
13                System.out.println("List--->Array  for String : 浅度copy");
14            }
15            System.out.println("===============(bean)List转化为Array========");
16            List<TestVo> voList1 = new ArrayList<TestVo>();
17            TestVo vo1 = new TestVo("vo_a");
18            voList1.add(vo1);
19            voList1.add(new TestVo("vo_b"));
20            TestVo[] voArray1 = voList1.toArray(new TestVo[voList1.size()]);
21            System.out.println("voArray1.length="+voArray1.length);
22            vo1.setName("vo_a_new");
23            System.out.println("voList1[0]的属性Name修改为:vo_a_new;"+"voArray1[0]的属性Name当前值:" + voArray1[0].getName());
24            if ("vo_a_new".equals(voArray1[0].getName())) {
25                System.out.println("List ---> Array for Bean : 浅度copy");
26            } else {
27                System.out.println("List ---> Array for Bean : 深度copy");
28            }
29 
30            System.out.println("===============Array转化为List===============");
31            String[] array2 = new String[] { "arr_a", "arr_b" };
32            List<String> list2 = Arrays.asList(array2);
33            array2[0] = "arr_a_new";
34            if ("arr_a_new".equals(list2.get(0))) {
35                System.out.println("Array ---> List for String : 深度copy");
36            } else {
37                System.out.println("Array ---> List for String : 浅度copy");
38            }
39            
40            System.out.println("===============(bean)Array转化为List========");
41            TestVo vo3 = new TestVo("vo_a");
42            TestVo[] voArray2 = new TestVo[] {vo3, new TestVo("vo_b") };
43            List<TestVo> voList2 = Arrays.asList(voArray2);
44            vo3.setName("vo_a_new");
45            System.out.println("voArray2[0]的属性Name修改为:vo_a_new;"+"voList2[0]的属性Name当前值:"+ voList2.get(0).getName());
46            if ("vo_a_new".equals(voList2.get(0).getName())) {
47                System.out.println("Array -> List for Bean : 浅度copy");
48            } else {
49                System.out.println("Array -> List for Bean : 深度copy");
50            }

执行结果:

===============List转化为Array===============
array1=[list_a, list_b]
list1 clear()
list1.size=0;array1.lenth=2
List--->Array  for String : 深度copy
===============(bean)List转化为Array========
voArray1.length=2
voList1[0]的属性Name修改为:vo_a_new;voArray1[0]的属性Name当前值:vo_a_new
List ---> Array for Bean : 浅度copy
===============Array转化为List===============
Array ---> List for String : 深度copy
===============(bean)Array转化为List========
voArray2[0]的属性Name修改为:vo_a_new;voList2[0]的属性Name当前值:vo_a_new
Array -> List for Bean : 浅度copy

 

2、Set->Array

 1 System.out.println("===============Set转化为Array===============");
 2            Set<String> set1 = new HashSet<String>();
 3            set1.add("set_a");
 4            set1.add("set_b");
 5            String[] array1 = set1.toArray(new String[set1.size()]);
 6            System.out.println("set1="+set1.toString());
 7            System.out.println("array1="+Arrays.toString(array1));
 8            set1.clear();
 9            if (array1.length==2) {
10                System.out.println("Set ---> Array for String: 深度copy");
11            } else {
12                System.out.println("Set ----> Array for String: 浅度copy");
13            }
14            System.out.println("==========(bean)Set转化为Array==========");
15            Set<TestVo> voSet1 = new HashSet<TestVo>();
16            TestVo vo1 = new TestVo("vo_a");
17            voSet1.add(vo1);
18            voSet1.add(new TestVo("vo_b"));
19            TestVo[] voArray1 = voSet1.toArray(new TestVo[voSet1.size()]);
20            vo1.setName("vo_a_new");
21            System.out.println("voArray1.length="+voArray1.length);
22            boolean deepFlag = true;
23            for (TestVo vo : voArray1) {
24                if ("vo_a_new".equals(vo.getName())) {
25                    deepFlag = false;
26                    break;
27                }
28            }
29            if (deepFlag) {
30                System.out.println("Set ---> Array for Bean : 深度copy");
31            } else {
32                System.out.println("Set ---> Array for Bean : 浅度copy");
33            }
34 
35            System.out.println("===============Array转化为Set===============");
36            String[] array2 = new String[] { "arr_a", "arr_b" };
37            Set<String> set2 = new HashSet<String>(Arrays.asList(array2));
38            array2[0]="arr_a_new";
39            System.out.println("Array ---> Set for String  set2= " + set2.toString());
40            if(set2.contains("arr_a_new")){
41                System.out.println("Array ---> Set for String: 浅度copy");
42            }else{
43                System.out.println("Array ---> Set for String: 深度copy"); 
44            }
45            System.out.println("============(bean)Array转化为Set============");
46            TestVo vo3 = new TestVo("vo_a");
47            TestVo[] voArray2 = new TestVo[] { vo1, new TestVo("vo_b") };
48            Set<TestVo> voSet2 = new HashSet<TestVo>(Arrays.asList(voArray2));
49            vo3.setName("vo_a_new");
50            for(java.util.Iterator it=voSet2.iterator();it.hasNext();){
51                TestVo vo=(TestVo) it.next();
52                if (vo.getName().equals("vo_a_new")) {
53                    System.out.println("Array ---> Set for Bean : 浅度copy");
54                } else {
55                    System.out.println("Array ---> Set for Bean : 深度copy");
56                } 
57            }

执行结果:

===============Set转化为Array===============
set1=[set_a, set_b]
array1=[set_a, set_b]
Set ---> Array for String: 深度copy
==========(bean)Set转化为Array==========
voArray1.length=2
Set ---> Array for Bean : 浅度copy
===============Array转化为Set===============
Array ---> Set for String  set2= [arr_a, arr_b]
Array ---> Set for String: 深度copy
============(bean)Array转化为Set============
Array ---> Set for Bean : 浅度copy
Array ---> Set for Bean : 深度copy

3、List->Set

 1 System.out.println("===============List转化为Set===============");
 2         List<String> list1 = new ArrayList<String>();
 3         list1.add("list_a");
 4         list1.add("list_b");
 5         Set<String> set1 = new HashSet<String>(list1);
 6         System.out.println("list1="+list1.toString());
 7         System.out.println("set1="+set1.toString());
 8         list1.clear();
 9         System.out.println("list1.clear()");
10         if (set1.size() == 2) {
11             System.out.println("List ---> Set for String : 深度copy");
12         } else {
13             System.out.println("List ---> Set for String : 浅度copy");
14         }
15            System.out.println("===============(bean)List转化为Set===========");
16         List<TestVo> voList1 = new ArrayList<TestVo>();
17         TestVo vo1 = new TestVo("vo_a");
18         voList1.add(vo1);
19         voList1.add(new TestVo("vo_b"));
20         Set<TestVo> voSet1 = new HashSet<TestVo>(voList1);
21         vo1.setName("vo_a_new");
22         boolean setflag=false;
23         for(java.util.Iterator it=voSet1.iterator();it.hasNext();){
24                TestVo vo=(TestVo) it.next();
25                if (vo.getName().equals("vo_a_new")) {
26                    setflag=true;
27                } 
28            }
29         if(setflag){
30             System.out.println("Array ---> Set for Bean : 浅度copy");
31            } else {
32                System.out.println("Array ---> Set for Bean : 深度copy");
33         }
34            System.out.println("===============Set转化为List===============");
35         Set<String> set2 = new HashSet<String>();
36         set2.add("set_a");
37         set2.add("set_b");
38         List<String> list2 = new ArrayList<String>(set2);
39         set2.clear();
40         if (list2.size() == 2) {
41             System.out.println("Set ---> List for String : 深度copy");
42         } else {
43             System.out.println("Set ---> List for String : 浅度copy");
44         }
45            System.out.println("===============(bean)Set转化为List===========");
46         Set<TestVo> voSet2 = new HashSet<TestVo>();
47         TestVo vo3 = new TestVo("vo_a");
48         voSet2.add(vo3);
49         voSet2.add(new TestVo("vo_b"));
50         List<TestVo> voList2 = new ArrayList<TestVo>(voSet2);
51         vo3.setName("vo_a_new");
52         boolean listflag=false;
53         for(TestVo vo:voList2){
54             if(vo.getName().equals("vo_a_new")){
55                 listflag=true;
56             }
57         }
58         if (listflag) {
59             System.out.println("Set ---> List for Bean : 浅度copy");
60         } else {
61             System.out.println("Set ---> List for Bean : 深度copy");
62         }

执行结果:

===============List转化为Set===============
list1=[list_a, list_b]
set1=[list_b, list_a]
list1.clear()
List ---> Set for String : 深度copy
===============(bean)List转化为Set===========
Array ---> Set for Bean : 浅度copy
===============Set转化为List===============
Set ---> List for String : 深度copy
===============(bean)Set转化为List===========
Set ---> List for Bean : 浅度copy

4、List->Collection

 1 System.out.println("===============List转化为Colletction===============");
 2         List<String> list1 = new ArrayList<String>();
 3         list1.add("list_a");
 4         list1.add("list_b");
 5         Collection<String> collection1 = list1;
 6         System.out.println("collection1.size:" + collection1.size());
 7         System.out.println("List继承于Collection,可以直接赋值");
 8     
 9            System.out.println("===============Collection转化为List===============");
10         Collection<String> collection2 = new ArrayList<String>();
11         collection2.add("col_a");
12         collection2.add("col_b");
13         List<String> list2 = new ArrayList<String>(collection2);
14         System.out.println("list2="+list2.toString());

执行结果:

===============List转化为Colletction===============
collection1.size:2
List继承于Collection,可以直接赋值
===============Collection转化为List===============
list2=[col_a, col_b]

5、ArrayCopy

 1 System.out.println("===============Arraycopy===============");
 2         String[] array1 = new String[] { "arr_a", "arr_b" };
 3         String[] array2 = new String[array1.length];
 4         System.arraycopy(array1, 0, array2, 0, array1.length);
 5         array1[0]="arr_a_new";
 6         System.out.println("array2="+Arrays.toString(array2));
 7         if(array2[0]=="arr_a_new"){
 8             System.out.println("Array Copy for String :浅度copy");
 9         }else{
10             System.out.println("Array Copy for String :深度copy");
11         }
12          System.out.println("===============(bean)Arraycopy===============");
13         TestVo vo1 = new TestVo("vo_a");
14         TestVo[] voArray1 = new TestVo[] { vo1, new TestVo("vo_b") };
15         TestVo[] voArray2 = new TestVo[voArray1.length];
16         System.arraycopy(voArray1, 0, voArray2, 0, voArray1.length);
17         vo1.setName("vo_a_new");
18         System.out.println("voArray1[0]的属性name修改为:vo_a_new;"+"voArray2[0]的属性name当前值:" + voArray2[0].getName());
19         if (voArray1[0] == voArray2[0]) {
20             System.out.println("Array Copy for Bean : 浅度copy");
21         } else {
22             System.out.println("Array Copy for Bean : 深度copy");
23         }

执行结果:

===============Arraycopy===============
array2=[arr_a, arr_b]
Array Copy for String :深度copy
===============(bean)Arraycopy===============
voArray1[0]的属性name修改为:vo_a_new;voArray2[0]的属性name当前值:vo_a_new
Array Copy for Bean : 浅度copy

6、ListCopy

 1 System.out.println("===============List copy===============");
 2         List<String> list1 = new ArrayList<String>();
 3         list1.add("list_a");
 4         list1.add("list_b");
 5     
 6         List<String> list2 = list1;
 7         List<String> list3 = new ArrayList<String>(list1);
 8         List<String> list4 = new ArrayList<String>(Arrays.asList(new String[list1.size()]));
 9         Collections.copy(list4, list1);
10         list1.clear();
11         System.out.println("List copy  源List清空");
12         System.out.println("List copy  直接赋值list2 = list1 的方法copy后的List的size="+ list2.size());
13         System.out.println("List copy  new ArrayList<String>(list1)的方法copy后的List的size="+ list3.size());
14         System.out.println("List copy  Collections.copy(list4,list1)的方法copy后的List的size: "+ list4.size());

执行结果:

===============List copy===============
List copy  源List清空
List copy  直接赋值list2 = list1 的方法copy后的List的size=0
List copy  new ArrayList<String>(list1)的方法copy后的List的size=2
List copy  Collections.copy(list4,list1)的方法copy后的List的size: 2

(3)结束:这个文章是我借鉴一个同事写的博客,写下来一个是为了加深记忆,二是以防以后找不到,三是也许能对别人有些帮助。

摘抄地址:http://www.micmiu.com/lang/java/array-collection-copy/

相关文章

    暂无相关文章
相关栏目:

用户点评