`
snake_hand
  • 浏览: 625882 次
社区版块
存档分类
最新评论

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/

分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    Java API文档 中文网页版

    Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java电商源代码 java电商源代码

    java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java...

    java api最新7.0

    JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...

    java单机小游戏.zip

    java单机小游戏java单机小游戏java单机小游戏java单机小游戏 java单机小游戏java单机小游戏java单机小游戏java单机小游戏 java单机小游戏java单机小游戏java单机小游戏java单机小游戏 java单机小游戏java单机小游戏...

    java景点导航系统java景点导航系统

    java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点...

    java开源包4

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java简易小游戏.zip

    java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏...

    java开源包9

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包10

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Java2Pas Java代码转pas代码

    Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    ### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....

    Java基础 学习笔记 Markdownr版

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性,灵活性和安全性。本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,...

    smali2java——直接将smali转换成java

    标题"smali2java——直接将smali转换成java"揭示了本文的核心主题,即一个名为"smali2java"的工具,它的主要功能是将编程语言Smali转换为Java。Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而...

    java开源包1

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java2python--java代码转python工具

    Java到Python的转换工具,如标题“java2python”所示,是编程领域中的一种实用技术,旨在帮助开发者将已有的Java代码转换为Python语言。这种转换对于那些熟悉Java但希望进入Python生态系统,或者想要利用Python特定...

Global site tag (gtag.js) - Google Analytics