JAVA-深拷贝/浅拷贝 比较器

来源:互联网 发布:知乎你见过吹牛的人 编辑:程序博客网 时间:2024/05/18 11:05
其实在实际中真正去搞一个深拷贝很麻烦,所以直接用序列化解决问题。
<dependency>            <groupId>commons-lang</groupId>            <artifactId>commons-lang</artifactId>            <version>2.3</version>        </dependency>Student stu = (Student)SerializationUtils.clone(target) 这样可以获得对象。StringUtils.join() StringUtils.isEmpty() 都非常好用





只有基础内置元素=才会深拷贝(String不是)
你定义的类如果需要深拷贝,要rewrite Cloneable的Clone方法
若是继承关系,父类也要重写。
http://www.cnblogs.com/yxnchinahlj/archive/2010/09/20/1831615.html
①为什么我们在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。 
继承自java.lang.Object类的clone()方法是浅复制。
http://bbs.csdn.net/topics/360077763
http://zhidao.baidu.com/link?url=UktuJvqqUbe3BJcy4nlNoee09gZfGBIB_SdvvrCBfJN8HDODSWcbI8ONlLCdQp4CMFVm9wVz3XfVNXn3bZ_FOa


比较器 要重写Comparator接口中compare方法
import java.io.*;import java.net.*;import java.util.*;public class Test{ public static void main(String args[]) throws Exception{  TreeMap<String,Integer> mm=new TreeMap<String,Integer>(new Comparator(){   public int compare(Object a,Object b){    String aa=(String)a;    String bb=(String)b;    return bb.compareTo(aa);   }  });  mm.put(new String("a"),new Integer(23));  mm.put("b",new Integer(31));  Set<Map.Entry<String,Integer>> set=mm.entrySet();  System.out.println (set);  System.out.println (mm.keySet()); }}


0 0
原创粉丝点击