- 浏览: 916778 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1638系统版本:Mac OS X 10.9.1 在 ... -
JBoss IIOP实现CORBA/IIOP访问EJB的示例
2014-01-17 14:08 617目录 概述 特性 示例演示 详见:http:// ... -
JavaIDL开发CORBA实例演示
2013-10-25 15:51 524目录: 概述 开发步骤 创建Java项目 -
OpenORB开发CORBA的实例介绍
2013-10-25 15:50 1266目录: 概述 开发步骤 -
java读取控制台输入的几种方法
2013-10-24 09:01 1069java读取控制台输入的 ... -
OSX系统中各种JDK的路径说明
2013-10-15 08:50 641不同厂商发布的JDK,在OSX下的安装路径是不同的。以我本机 ... -
Java 完美判断中文字符
2012-11-23 17:23 1024详见:http://www.micmiu.com/ ... -
java自带的MD5、SHA1算法演示
2012-06-04 10:23 3065详见:http://www.micmiu.com/lang ... -
解决java网络编程IPv6问题
2012-04-05 13:38 1379详见:http://www.micmiu.com/lang/j ... -
swing中Label添加下划线几种方法(含完美版本)
2011-09-30 11:57 3331blog迁移至 :http://www.micmiu. ... -
Java实现给图片添加水印
2011-08-21 12:21 15824blog迁移至 :http://www.m ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-01 14:14 13694blog迁移至 :http://www.m ... -
proxool连接池介绍
2011-06-29 08:42 3907blog迁移至:http://www.micmiu.c ... -
c3p0配置介绍
2011-06-28 08:56 6606blog迁移至 :http://www.micmiu. ... -
apache-DBCP基本配置介绍
2011-06-27 00:04 13356blog迁移至:http://www ... -
JAVA中IP和整数相互转化介绍
2011-06-22 18:36 4774blog迁移至 :http://www.micmiu. ... -
JAVA线程池ThreadPoolExecutor
2011-06-21 19:00 8984blog迁移至:http://www.micmiu.c ... -
Java 获取当前Classpath
2011-06-19 11:50 8122blog迁移至:http://www ... -
扫描指定包下的类(包括jar文件里的类)
2011-05-27 12:56 5979blog迁移至:http://www.micmiu.c ... -
Java HotSpot dcevm 在debug模式下的热部署
2011-02-16 10:41 4335blog迁移至:http://www.micmiu.c ...
相关推荐
### Delphi中String,PChar,PByte,Array of Char,Array of Byte 互相转换 在Delphi编程语言中,字符串和其他与字符相关的数据类型之间的转换是常见的需求。本篇文章将详细介绍如何在这些数据类型之间进行转换,...
在复制过程中,如果源数组和目标数组包含的是不同类型的元素,`Array.Copy`会自动进行类型转换或装箱操作,只要这种转换是合法的。请注意,这种方法不支持跨类型的复制,比如从`int[]`复制到`string[]`。 **1. Copy...
理解它们之间的相互转换能够帮助我们更好地管理和操作数据。以下将详细介绍Java中List、Set与Array之间的转换方法。 1. **List与Array的转换** - **Array转List**: 如果你有一个数组,可以使用`Arrays.asList()`...
Pandas是一个强大的Python数据分析和处理库,广泛应用于数据挖掘和数据分析领域。...通过上述方法,可以有效地在Pandas的DataFrame和NumPy的Array之间进行快速转换,充分利用两者各自的优势,提高工作效率。
在JavaScript中,Array(数组)和String(字符串)的互转换是经常需要掌握的基础知识点,尤其在处理数据时非常实用。本文将详细介绍如何使用JavaScript内置方法来实现数组与字符串之间的转换,其中涉及到了两个重要...
总结来说,Numpy中的数组和矩阵转换方法非常简单直接,可以通过np.mat函数和np.array函数来实现互相转换。在实际应用中,我们应根据具体需要选择合适的数据结构。在Numpy新版本中,建议更多地使用ndarray对象来进行...
Collection与Collections,Array与Arrays的...Collection和Array是Java中两个基本的数据结构,而Collections和Arrays是两个静态类,提供了对集合和数组的各种操作。了解他们之间的区别对于Java开发人员来说非常重要。
本文主要介绍了Python中列表(`list`)以及列表与数组(`array`)之间的相互转换方法。列表是Python中最基础的数据结构之一,支持灵活地添加和删除元素。数组则更适合于数值计算,提供更高效的内存管理和运算性能。通过...
本篇将详细探讨如何在JS中实现Array与JSON之间的相互转换。 首先,我们需要理解两者的概念。数组是JavaScript中的内置对象,它是一个有序的数据集合,可以通过索引来访问其元素。而JSON是一种轻量级的数据交换格式...
在编程领域,数组(Array)和列表(List)是两种常用的数据结构,它们各自具有不同的特点和适用场景。数组是一种固定长度的数据结构,适合存储已知大小的数据集合;而列表则是一种可变长度的数据结构,适合存储未知...
总结,Java中Array和List之间的转换主要依赖于Arrays类的asList()方法、ArrayList的toArray()方法以及Java 8引入的Stream API。理解这些转换方式及其适用场景,能够帮助我们在编程中更灵活地处理数据结构,提高代码...
在Java编程语言中,Array和Set是两种不同的数据结构,它们各自有其特性和用途。Array是一种固定大小的序列,可以存储基本类型或对象,并且元素可以通过索引访问。而Set是一个不允许有重复元素的集合,它维护了元素的...
上面的命令将名为checkboxfalse_icon.svg的图像转换为位深度为2的c标头,尺寸为34x34(iw和ih的默认值为24,并且不是必需的) 输出头文件 #define CHECKBOXFALSE_ICON_H #include "../../UI/Widgets/Icon2bit.h" ...
cad程序:有三个命令,1.xcp在拷贝时自动增加拷贝内容的数字串。 2,xarr array的扩展,同1 3. xchg 可以修改相同的字符串,使其中的数字增加
### C# 中 Array、ArrayList 和 List 的区别 在C#编程语言中,处理集合数据时,程序员经常需要根据实际需求选择合适的集合类型。本文将详细解释C#中Array、ArrayList和List之间的区别,并通过示例代码帮助理解这些...
本文将详细介绍如何在Python中实现矩阵和array数组之间的转换。 首先,让我们了解array和matrix的基本概念: 1. **NumPy Array**: NumPy的array是多维数组,它支持各种数学操作,如加法、减法、乘法等。Array是...
在这个“labview_labview示例之Convert Waveform to 2D Array.zip”压缩包中,包含了一个关于如何在LabVIEW中将波形数据转换为二维数组的示例。这个过程对于处理和分析时间序列数据,如信号处理或数据分析,是至关...
标题中的“PV_Array.zip”是一个压缩包文件,包含与光伏(Photovoltaic,简称PV)系统相关的材料,特别是关于“PV array”的建模和仿真。"PV array"指的是由多个光伏电池串联或并联组成的光伏阵列,是太阳能发电系统...