- 浏览: 308442 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (187)
- JAVA (66)
- JS (2)
- AJAX (9)
- Servlet (5)
- eclipse (4)
- html (2)
- PL/SQL (9)
- SOAP (1)
- other (14)
- JavaScript (8)
- Struts2 (6)
- Spring (10)
- Hibernate (5)
- JSP (1)
- Linux (3)
- WebService (2)
- 数据结构 (1)
- DB (5)
- English (1)
- maven (4)
- Code standard (2)
- SQL (1)
- 软件架构 (1)
- Tomcat (2)
- windows (1)
- HSQL (0)
- Open source framework (0)
- Web (6)
- Compass (0)
- Flex (1)
- OSGI (1)
- python (3)
- groovy (2)
- JPA (2)
- svn (1)
- jetty (1)
最新评论
-
zjfshowtime:
it doesn't work !why
Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池 -
coco5012:
Useful
sql server日期时间函数 datetime -
烟花弥散:
弱弱的问一句,您的第一个举例中else 后面可以跟判断条件吗? ...
Java高手论道:你还在用if else吗? -
coco5012:
Not very simple
使用assembly plugin实现自定义打包 -
mqlfly2008:
[color=red][size=medium][size=x ...
Java高手论道:你还在用if else吗?
大家应该理解浅拷贝和深拷贝的区别:
浅拷贝:被复制对象的任何变量都含有和原来的对象相同的值,而任何的对其他对象的引用仍然指向原来的对象。对拷贝后的引用的修改,还能影响原来的对象。
深拷贝:把要复制的对象所引用的对象都复制了一遍,对现在对象的修改不会影响原有的对象。
如果大家还不理解,在网上看到一个人的比喻很有意思:
就好比一个爸爸一个儿子
浅拷贝:你克隆一下,只得到一个爸爸,这是浅
深拷贝:你克隆一下,既得到了爸爸,又得到了儿子,这是深
另外,如果你克隆的对象里面还包括其他对象,比如汽车对象里还有座位对象,那么浅的结果就是汽车被拷贝了,座位并没有,深的话,就是一起都拷贝了。
下面,给大家说一下如何实现arraylist的深拷贝的一种实现方式:
有一个类Userinfo,需要实现serializable接口,可以序列化。
package com.b2r.paymentserver; import java.io.Serializable; public class Userinfo implements Serializable { /** * */ private static final long serialVersionUID = 1L; private int id; private String name; public int getid() { return id; } public void setid(int id) { this.id = id; } public String getname() { return name; } public void setname(String name) { this.name = name; } }
package com.b2r.paymentserver; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; public class Testmain { /** * * @param args */ public static void main(String[] args) { // todo auto-generated method stub List src = new ArrayList(2); Userinfo ui1 = new Userinfo(); ui1.setid(1); ui1.setname("aaa"); src.add(ui1); Userinfo ui2 = new Userinfo(); ui1.setid(2); ui1.setname("bbb"); src.add(ui2); List dest = new ArrayList(2); Testmain test = new Testmain(); try { dest = test.deepcopy(src); } catch (IOException e) { // todo auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // todo auto-generated catch block e.printStackTrace(); } System.out.println(src == dest); Userinfo u = (Userinfo) src.get(0); Userinfo uu = (Userinfo) dest.get(0); uu.setname("dkkdkddk"); System.out.println(u.getname()); System.out.println(uu.getname()); } public List deepcopy(List src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteout = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteout); out.writeObject(src); ByteArrayInputStream bytein = new ByteArrayInputStream( byteout.toByteArray()); ObjectInputStream in = new ObjectInputStream(bytein); List dest = (List) in.readObject(); return dest; } }
发表评论
-
深入 Lucene 索引机制
2011-09-21 21:49 616简介: Lucene 是一个 ... -
Apache DBUtils使用总结
2011-09-19 10:50 980Apache DBUtils使用总结 DBU ... -
Java搜索引擎 Lucene
2011-09-19 10:43 882Lucene 是一套用于全文 ... -
Java的弱引用(Weak Reference)
2011-09-16 08:47 1325之前一直没有接触 ... -
JAVA读取大文件
2011-09-13 10:27 3398/** * */ package com.b2s. ... -
Java性能优化技巧
2011-09-06 11:59 890摘要: ==================== ... -
java程序性能优化
2011-09-06 11:58 695一、避免在循环条件中使用复杂表达式 在不做编译优化 ... -
大家在普遍认识中对架构师这一职业有哪些误区
2011-09-04 10:26 745误区一 架构师与项目经理没有区别。大家经常在 ... -
Ibatis执行SQL操作把SQL打印到控制台
2011-08-10 10:46 2772要想让Ibatis打印SQL语句到控制台,可以在log4j.x ... -
用 PMD 铲除 bug
2011-06-08 17:33 1031简介: PMD 是一个开源的静态分析工具,是一个值得您添加 ... -
Web Service 实现分布式服务的基本原理
2011-05-24 13:27 1496简单的说, 就是客户端 ... -
Web Service概述
2011-05-24 10:16 1007Web Service是构建互联网 ... -
有关母亲的名人名言
2011-05-09 08:42 810God could not be everywhere and ... -
装饰器模式[Decorator]
2011-05-06 17:42 731装饰器模式 主要应用于这样一种场合,当你已经 ... -
Java 7已经完成的七大新功能预览
2011-05-06 12:26 1144今年的Devoxx大会又是一次有关Java 7进程的一 ... -
回归测试
2011-05-04 17:16 795回归测试, 英文是Regression testing。 ... -
jxl 使用总结收藏
2011-04-29 17:33 964jxl的一些总结 要 ... -
Struts1下如何实现国际化
2011-04-25 14:18 1139Struts1下如何实现国际化 1.ApplicationR ... -
JAVA静态导入(import static)详解
2011-04-20 17:52 4024在Java 5中,import语句得到了增强,以便提供甚至更加 ... -
java类型后添加三点的用法
2011-04-20 17:46 1142今天看到一个没见过的函数参数列表test(int... a), ...
相关推荐
用java语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩,从键盘输入学员信息, 包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序 插入功能:在排序后的学员成绩表中...
ArrayList作为Java集合框架中的一员,它提供了丰富的操作接口,包括对元素的添加、删除、修改以及排序等。本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort...
在Java编程语言中,ArrayList是集合框架中的一种重要数据结构,它是一个动态数组,可以存储任意类型的对象。ArrayList提供了一种高效的方式来管理大量的元素,并且提供了迭代器(Iterator)来遍历这些元素,使得我们...
- 当 ArrayList 的容量不足时,它会自动扩容,但可能会造成不必要的内存分配和拷贝。因此,在创建 ArrayList 时可以预估其大小,以减少扩容操作。 - 不要尝试通过索引越界访问 ArrayList,这会导致 `...
ArrayList的removeAll方法详解 ArrayList的removeAll方法是一个常用的集合操作方法,该方法可以从一个ArrayList中删除所有在另外一个集合中的元素。但是,在实际开发过程中,removeAll方法的使用需要 thận重,因为...
Java 中 ArrayList 的使用方法以及与 Vector 的对比 ArrayList 是 Java 中的一种动态数组,它提供了很多有用的特性,例如动态地增加和减少元素,实现了 ICollection 和 IList 接口,灵活的设置数组的大小等。下面...
### Java中ArrayList的用法详解 #### 一、概述 `ArrayList`是Java集合框架中的一个动态数组类,它能够存储任意类型的对象,并且在运行时动态调整其大小。这使得`ArrayList`成为处理数量未知的数据集合时的一个非常...
day14-ArrayList集合 1.ArrayList 1.1ArrayList类概述【理解】 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 ...底层是数组实现的,长度可以...array.add("java");
Java ArrayList教程 Java ArrayList是Java集合框架中的一种动态数组,继承了AbstractList,并实现了List接口。ArrayList位于java.util包中,使用前需要引入它。ArrayList是一个可以动态修改的数组,与普通数组的...
List<User> copiedUsers = new ArrayList(originalUsers.size()); for (User user : originalUsers) { copiedUsers.add(DeepCopyHelper.deepCopy(user, User.class)); } ``` 在这个例子中,我们使用了Apache ...
InitArray自己编写的一个JAVA用的集合类,试试效果如何。
自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构
"Java ArrayList.add 的实现方法详解" Java ArrayList 是一种常用的 List 实现, 其中 boolean add(E e) 方法和 void add(int index, E element) 方法是两个重要的实现方法。下面我们将详细介绍这两个方法的实现...
java中对ArrayList进行排序的方法参考
在Java编程语言中,ArrayList是集合框架中的一种重要数据结构,属于List接口的实现类。ArrayList主要用于存储一组有序的、可变大小的对象序列。它的特点是允许快速的随机访问,但插入和删除元素时效率相对较低,因为...
Cloneable接口表明ArrayList的对象可以被克隆,而Serializable接口则意味着ArrayList可以进行序列化,以便在网络间或磁盘上进行数据传输和持久化。 字段属性: ArrayList内部使用一个Object类型的数组elementData来...
ArrayList、LinkList和Vector是Java中三个常用的集合类,它们都实现了List接口,但是在实现方式和性能上有所不同。 ArrayList ArrayList是使用数组方式存储数据的,数组元素数大于实际存储的数据,以便增加和插入...
用java自己实现的arrayList,比较详细,有助于初学者理解arrayList的基本概念和基础用法