- 浏览: 904468 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- J2EE (9)
- Spring (11)
- Hibernate (11)
- Struts (5)
- opensource (19)
- Hadoop (28)
- 架构设计 (8)
- 企业应用 (10)
- SNMP (8)
- SSO (4)
- webservice (11)
- RPC (2)
- 编程语言 (0)
- Java (30)
- Javascript (5)
- NoSQL (11)
- 数据库 (0)
- oracle (8)
- MySQL (3)
- web (1)
- Android (2)
- Linux (15)
- 软件工具 (15)
- 项目构建 (11)
- 测试工具 (2)
- Exception (19)
- 杂谈 (4)
- Groovy (5)
- Nodejs (1)
- MacOSX (4)
最新评论
-
fighhin:
decode(BinaryBitmap,java.util.M ...
条形码/二维码之开源利器ZXing图文介绍 -
u013489005:
追问:楼主,请问有中文文档么?我的邮箱是frankgray@s ...
Java表达式计算引擎:Expr4J -
u013489005:
感谢博主 需要引入的包是import java.io.*;im ...
Java表达式计算引擎:Expr4J -
calosteward:
感谢楼主分享。。 Zxing 我听说过的。__________ ...
条形码/二维码之开源利器ZXing图文介绍 -
u013810758:
judasqiqi 写道感谢楼主!想请问楼主一下这个生成的图片 ...
Java实现二维码QRCode的编码和解码
blog迁移至:http://www.micmiu.com
周末闲来无事,把java中Array和Collection之间相互转换小结了下,顺便对转换过程中涉及到的javabena的copy深度进行了简单的测试,详细内容将按照如下分类分别介绍:
测试过程中用到的javabean:TestVo的代码就不贴了,就一个简单的String属性name.
【一】、 List <-> Array
运行结果:
==============================
List -> Array
List -> Array 集合中元素的顺序不变
srclist clear()
destArr length=2
List -> Array for String : 深度copy
List -> Array 集合中元素的顺序不变
srcVolist[0]的属性Name修改为:xiaoxiao_new
destVoArr[0]的属性Name当前值:xiaoxiao_new
List -> Array for Bean : 浅度copy
Array -> List
Array -> List for String : 深度copy
srcObjArr[0]的属性Name修改为:vo_3_new
destObjList[0]的属性Name当前值:vo_3_new
Array -> List for Bean : 浅度copy
==============================
【二】、 Set <-> Array
执行结果:
【三】、 List <-> Set
执行结果:
【四】、 List <-> Collection
执行结果:
【五】、 Array Copy
执行结果:
【六】、 List Copy
执行结果:
转载请注明来自:Michael's blog @http://sjsky.iteye.com/
-----------------------------------分 ------------------------------------隔 ------------------------------------线 --------------------------------------
周末闲来无事,把java中Array和Collection之间相互转换小结了下,顺便对转换过程中涉及到的javabena的copy深度进行了简单的测试,详细内容将按照如下分类分别介绍:
- List <-> Array
- Set <-> Array
- List <-> Set
- List <-> Collection
- Array Copy
- List Copy
测试过程中用到的javabean:TestVo的代码就不贴了,就一个简单的String属性name.
【一】、 List <-> Array
System.out.println("=============================="); // List -> Array System.out.println("List -> Array "); List<String> srclist = new ArrayList<String>(); srclist.add("src_list_a"); srclist.add("src_list_b"); String[] destArr = srclist.toArray(new String[srclist.size()]); System.out.println("List -> Array 集合中元素的顺序不变"); srclist.clear(); System.out.println("srclist clear()"); System.out.println("destArr length=" + destArr.length); if (destArr.length == 2) { System.out.println("List -> Array for String : 深度copy"); } else { System.out.println("List -> Array for String : 浅度copy"); } List<TestVo> srcVolist = new ArrayList<TestVo>(); TestVo vo1 = new TestVo("michael"); srcVolist.add(vo1); srcVolist.add(new TestVo("xiaoxiao")); srcVolist.add(new TestVo("vo_3")); TestVo[] destVoArr = srcVolist.toArray(new TestVo[srcVolist.size()]); System.out.println("List -> Array 集合中元素的顺序不变"); vo1.setName("xiaoxiao_new"); System.out.println("srcVolist[0]的属性Name修改为:xiaoxiao_new"); System.out.println("destVoArr[0]的属性Name当前值:" + destVoArr[0].getName()); if ("xiaoxiao_new".equals(destVoArr[0].getName())) { System.out.println("List -> Array for Bean : 浅度copy"); } else { System.out.println("List -> Array for Bean : 深度copy"); } // Array -> List System.out.println("Array -> List"); String[] srcArr = new String[] { "src_arr_1", "src_arr_2" }; List<String> destList = Arrays.asList(srcArr); srcArr[0] = "src_arr_1_new"; if ("src_arr_1_new".equals(destList.get(0))) { System.out.println("Array -> List for String : 深度copy"); } else { System.out.println("Array -> List for String : 浅度copy"); } TestVo vo3 = new TestVo("vo_3"); TestVo[] srcObjArr = new TestVo[] { vo3, new TestVo("vo_4") }; List<TestVo> destObjList = Arrays.asList(srcObjArr); vo3.setName("vo_3_new"); System.out.println(" srcObjArr[0]的属性Name修改为:vo_3_new"); System.out.println("destObjList[0]的属性Name当前值:" + destObjList.get(0).getName()); if ("vo_3_new".equals(destObjList.get(0).getName())) { System.out.println("Array -> List for Bean : 浅度copy"); } else { System.out.println("Array -> List for Bean : 深度copy"); } System.out.println("==============================");
运行结果:
引用
==============================
List -> Array
List -> Array 集合中元素的顺序不变
srclist clear()
destArr length=2
List -> Array for String : 深度copy
List -> Array 集合中元素的顺序不变
srcVolist[0]的属性Name修改为:xiaoxiao_new
destVoArr[0]的属性Name当前值:xiaoxiao_new
List -> Array for Bean : 浅度copy
Array -> List
Array -> List for String : 深度copy
srcObjArr[0]的属性Name修改为:vo_3_new
destObjList[0]的属性Name当前值:vo_3_new
Array -> List for Bean : 浅度copy
==============================
【二】、 Set <-> Array
System.out.println("=============================="); // Set -> Array System.out.println("Set -> Array"); System.out.println("Set -> Array 集合中元素的顺序会变"); Set<String> srcSet = new HashSet<String>(); srcSet.add("michael"); srcSet.add("xiaoxiao"); String[] destArr = srcSet.toArray(new String[srcSet.size()]); System.out.println(" String destArr size: " + destArr.length); Set<TestVo> srcObjSet = new HashSet<TestVo>(); TestVo vo1 = new TestVo("michael"); srcObjSet.add(vo1); srcObjSet.add(new TestVo("xiaoxiao")); TestVo[] destObjArr = srcObjSet.toArray(new TestVo[srcObjSet.size()]); vo1.setName("michael_new"); System.out.println(" Bean destArr size: " + destArr.length); boolean deepFlag = true; for (TestVo vo : destObjArr) { if ("michael_new".equals(vo.getName())) { deepFlag = false; break; } } if (deepFlag) { System.out.println("Set -> Array for Bean : 深度copy"); } else { System.out.println("Set -> Array for Bean : 浅度copy"); } // Array -> Set System.out.println("Array -> Set"); System.out.println("Array -> Set 集合中元素的顺序会变"); String[] srcArr = new String[] { "michael", "xiaoxiao" }; Set<String> destSet = new HashSet<String>(Arrays.asList(srcArr)); System.out.println(" String destSet size: " + destSet.size()); TestVo vo3 = new TestVo("michael"); TestVo[] srcObjArr = new TestVo[] { vo1, new TestVo("xiaoxiao") }; Set<TestVo> destObjSet = new HashSet<TestVo>(Arrays.asList(srcObjArr)); vo3.setName("michael_new"); System.out.println(" Bean dest Set size: " + destObjSet.size()); deepFlag = true; for (TestVo vo : destObjSet) { if ("michael_new".equals(vo.getName())) { deepFlag = false; break; } } if (deepFlag) { System.out.println("Array -> Set for Bean : 深度copy"); } else { System.out.println("Array -> Set for Bean : 浅度copy"); } System.out.println("==============================");
执行结果:
引用
==============================
Set -> Array
Set -> Array 集合中元素的顺序会变
String destArr size: 2
Bean destArr size: 2
Set -> Array for Bean : 浅度copy
Array -> Set
Array -> Set 集合中元素的顺序会变
String destSet size: 2
Bean dest Set size: 2
Array -> Set for Bean : 浅度copy
==============================
Set -> Array
Set -> Array 集合中元素的顺序会变
String destArr size: 2
Bean destArr size: 2
Set -> Array for Bean : 浅度copy
Array -> Set
Array -> Set 集合中元素的顺序会变
String destSet size: 2
Bean dest Set size: 2
Array -> Set for Bean : 浅度copy
==============================
【三】、 List <-> Set
System.out.println("=============================="); // List -> Set System.out.println("List -> Set"); System.out.println("List -> Set 集合中元素的顺序不变"); List<String> srclist = new ArrayList<String>(); srclist.add("src_list_a"); srclist.add("src_list_b"); Set<String> destSet = new HashSet<String>(srclist); srclist.clear(); if (destSet.size() == 2) { System.out.println("List -> Set for String : 深度copy"); } else { System.out.println("List -> Set for String : 浅度copy"); } List<TestVo> srcObjList = new ArrayList<TestVo>(); TestVo vo1 = new TestVo("michael"); srcObjList.add(vo1); srcObjList.add(new TestVo("xiaoxiao")); Set<TestVo> destObjectSet = new HashSet<TestVo>(srcObjList); vo1.setName("michael_new"); if ("michael_new".equals(destObjectSet.iterator().next().getName())) { System.out.println("List -> Set for Bean : 浅度copy"); } else { System.out.println("List -> Set for Bean : 深度copy"); } // Set -> List System.out.println("Set -> List"); System.out.println("List -> Set 集合中元素的顺序会变"); Set<String> srcSet = new HashSet<String>(); srcSet.add("src_set_a"); srcSet.add("src_set_b"); List<String> destList = new ArrayList<String>(srcSet); srcSet.clear(); if (destList.size() == 2) { System.out.println("Set -> List for String : 深度copy"); } else { System.out.println("Set -> List for String : 浅度copy"); } Set<TestVo> srcObjSet = new HashSet<TestVo>(); TestVo vo3 = new TestVo("vo_3"); srcObjSet.add(vo3); srcObjSet.add(new TestVo("vo_4")); List<TestVo> destObjList = new ArrayList<TestVo>(srcObjSet); vo3.setName("vo_3_new"); if ("vo_3_new".equals(destObjList.get(0).getName()) || "vo_3_new".equals(destObjList.get(1).getName())) { System.out.println("Set -> List for Bean : 浅度copy"); } else { System.out.println("Set -> List for Bean : 深度copy"); } System.out.println("==============================");
执行结果:
引用
==============================
List -> Set
List -> Set 集合中元素的顺序不变
List -> Set for String : 深度copy
List -> Set for Bean : 浅度copy
Set -> List
List -> Set 集合中元素的顺序会变
Set -> List for String : 深度copy
Set -> List for Bean : 浅度copy
==============================
List -> Set
List -> Set 集合中元素的顺序不变
List -> Set for String : 深度copy
List -> Set for Bean : 浅度copy
Set -> List
List -> Set 集合中元素的顺序会变
Set -> List for String : 深度copy
Set -> List for Bean : 浅度copy
==============================
【四】、 List <-> Collection
System.out.println("=============================="); System.out.println("List -> Collection"); List<String> list = new ArrayList<String>(); list.add("michael"); list.add("xiaoxiao"); Collection<String> destCol = list; System.out.println("destCol size:" + destCol.size()); System.out.println("List继承于Collection,可以直接赋值"); System.out.println("Collection -> List"); Collection<String> col = new ArrayList<String>(); col.add("michael"); col.add("xiaoxiao"); List<String> destList = new ArrayList<String>(col); System.out.println("destList size:" + destList.size()); System.out.println("==============================");
执行结果:
引用
==============================
List -> Collection
destCol size:2
List继承于Collection,可以直接赋值
Collection -> List
destList size:2
==============================
List -> Collection
destCol size:2
List继承于Collection,可以直接赋值
Collection -> List
destList size:2
==============================
【五】、 Array Copy
System.out.println("=============================="); System.out.println("Array Copy :String"); String[] srcArr = new String[] { "michael", "xiaoxiao" }; String[] destArr = new String[srcArr.length]; System.arraycopy(srcArr, 0, destArr, 0, srcArr.length); System.out.println("Array Copy : Bean"); TestVo vo1 = new TestVo("michael"); TestVo[] srcObjArr = new TestVo[] { vo1, new TestVo("xiaoxiao") }; TestVo[] destObjArr = new TestVo[srcArr.length]; System.arraycopy(srcObjArr, 0, destObjArr, 0, srcObjArr.length); vo1.setName("michael_new"); System.out.println("srcObjArr[0]的属性name修改为:michael_new"); System.out .println("destObjArr[0]的属性name当前值:" + destObjArr[0].getName()); if (srcObjArr[0] == destObjArr[0]) { System.out.println("Array Copy for Bean : 浅度copy"); } else { System.out.println("Array Copy for Bean : 深度copy"); } System.out.println("==============================");
执行结果:
引用
==============================
Array Copy :String
Array Copy : Bean
srcObjArr[0]的属性name修改为:michael_new
destObjArr[0]的属性name当前值:michael_new
Array Copy for Bean : 浅度copy
==============================
Array Copy :String
Array Copy : Bean
srcObjArr[0]的属性name修改为:michael_new
destObjArr[0]的属性name当前值:michael_new
Array Copy for Bean : 浅度copy
==============================
【六】、 List Copy
System.out.println("=============================="); System.out.println("List Copy :String"); List<String> srcList = new ArrayList<String>(); srcList.add("michael"); srcList.add("xiaoxiao"); List<String> descList = srcList; List<String> descList2 = new ArrayList<String>(srcList); List<String> descList3 = new ArrayList<String>(Arrays .asList(new String[srcList.size()])); Collections.copy(descList3, srcList); srcList.clear(); System.out.println("源List清空"); System.out.println("直接赋值descList = srcList 的方法copy后的List size: " + descList.size()); System.out.println("new ArrayList<String>(srcList)的方法copy后的List size: " + descList2.size()); System.out.println("Collections.copy(dest,src)的方法copy后的List size: " + descList3.size()); System.out.println("==============================");
执行结果:
引用
==============================
List Copy :String
源List清空
直接赋值descList = srcList 的方法copy后的List size: 0
new ArrayList<String>(srcList)的方法copy后的List size: 2
Collections.copy(dest,src)的方法copy后的List size: 2
==============================
List Copy :String
源List清空
直接赋值descList = srcList 的方法copy后的List size: 0
new ArrayList<String>(srcList)的方法copy后的List size: 2
Collections.copy(dest,src)的方法copy后的List size: 2
==============================
转载请注明来自:Michael's blog @http://sjsky.iteye.com/
-----------------------------------分 ------------------------------------隔 ------------------------------------线 --------------------------------------
- CollectionConvertTest.zip (2.1 KB)
- 下载次数: 16
发表评论
-
$JAVA_HOME环境变量在Mac OS X中设置的问题
2014-01-19 20:31 1601系统版本:Mac OS X 10.9.1 在 ... -
JBoss IIOP实现CORBA/IIOP访问EJB的示例
2014-01-17 14:08 587目录 概述 特性 示例演示 详见:http:// ... -
JavaIDL开发CORBA实例演示
2013-10-25 15:51 495目录: 概述 开发步骤 创建Java项目 -
OpenORB开发CORBA的实例介绍
2013-10-25 15:50 1234目录: 概述 开发步骤 -
java读取控制台输入的几种方法
2013-10-24 09:01 1019java读取控制台输入的 ... -
OSX系统中各种JDK的路径说明
2013-10-15 08:50 605不同厂商发布的JDK,在OSX下的安装路径是不同的。以我本机 ... -
Java 完美判断中文字符
2012-11-23 17:23 998详见:http://www.micmiu.com/ ... -
java自带的MD5、SHA1算法演示
2012-06-04 10:23 3028详见:http://www.micmiu.com/lang ... -
解决java网络编程IPv6问题
2012-04-05 13:38 1345详见:http://www.micmiu.com/lang/j ... -
swing中Label添加下划线几种方法(含完美版本)
2011-09-30 11:57 3265blog迁移至 :http://www.micmiu. ... -
Java实现给图片添加水印
2011-08-21 12:21 15726blog迁移至 :http://www.m ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-01 14:14 13616blog迁移至 :http://www.m ... -
proxool连接池介绍
2011-06-29 08:42 3855blog迁移至:http://www.micmiu.c ... -
c3p0配置介绍
2011-06-28 08:56 6558blog迁移至 :http://www.micmiu. ... -
apache-DBCP基本配置介绍
2011-06-27 00:04 13290blog迁移至:http://www ... -
JAVA中IP和整数相互转化介绍
2011-06-22 18:36 4742blog迁移至 :http://www.micmiu. ... -
JAVA线程池ThreadPoolExecutor
2011-06-21 19:00 8913blog迁移至:http://www.micmiu.c ... -
Java 获取当前Classpath
2011-06-19 11:50 8072blog迁移至:http://www ... -
扫描指定包下的类(包括jar文件里的类)
2011-05-27 12:56 5940blog迁移至:http://www.micmiu.c ... -
Java HotSpot dcevm 在debug模式下的热部署
2011-02-16 10:41 4279blog迁移至:http://www.micmiu.c ...
相关推荐
delphi中String,PChar,PByte,Array of Char,Array of Byte 之间的互相转换
java List、Set与Array之间的相互转换 java List、Set与Array之间的相互转换
Array.Copy 方法,介绍Array.copy的几种用法
今天小编就为大家分享一篇Pandas实现dataframe和np.array的相互转换,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了Numpy数组array和矩阵matrix转换方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Javascript实现Array和String互转换的方法,涉及JavaScript中toString方法与split方法的使用技巧,需要的朋友可以参考下
主要介绍了Python中list以及list与array的相互转换实现方法,简单分析了Python中list的功能、使用方法及list与array相互转换实现技巧,需要的朋友可以参考下
本文详细讲解了java中Collection与Collections,Array与Arrays的区别。
数组和list的相互转换
cad程序:有三个命令,1.xcp在拷贝时自动增加拷贝内容的数字串。 2,xarr array的扩展,同1 3. xchg 可以修改相同的字符串,使其中的数字增加
NULL 博文链接:https://hudeyong926.iteye.com/blog/1123139
Java 在 Array 和 Set 之间进行转换的示例.rar
详解Java如何在Array和List之间进行转换.rar
测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar
Closure $iterator = null)array without(array $elements, array $ignore)array zip(array $one, array $another)integer indexOf(array $elements, mixed $element)array intersection(array $one, array $...
一个基于C#实现的Image与Byte Array进行相互转换的Class类库源码及例子程序
array和asarray都可将结构数据转换为ndarray类型。但是主要区别就是当数据源是ndarray时,array仍会copy出一个副本,占用新的内存,但asarray不会。 For example: import numpy as np #example 1: data1=[[1,1,1],...