(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)结束:这个文章是我借鉴一个同事写的博客,写下来一个是为了加深记忆,二是以防以后找不到,三是也许能对别人有些帮助。
相关推荐
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...
Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...
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开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...
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景点...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性,灵活性和安全性。本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,...
Java到Python的转换工具,如标题“java2python”所示,是编程领域中的一种实用技术,旨在帮助开发者将已有的Java代码转换为Python语言。这种转换对于那些熟悉Java但希望进入Python生态系统,或者想要利用Python特定...
jdk11官方版是一款专为java编程人员推出的软件开发工具。JAVA JDK 11最新版可以帮助用户轻松的获取到JAVA的运行环境,让你在电脑上进行程序开发操作。JAVA JDK 11软件新增Epsilon 垃圾收集器和lambda 参数的局部变量...