package cn.com.csuinfo.deepclone;
import java.util.Arrays;
public class DeepClone implements Cloneable {
private int[][] arr;
// private int[][] arr1;
private int[] a;
public DeepClone() {
}
public DeepClone(int[][] arr, int[] a) {
this.arr = arr;
this.a = a;
}
@Override
/* 覆盖Object中的clone()方法 */
public DeepClone clone() throws CloneNotSupportedException {
DeepClone cloned = (DeepClone) super.clone();
cloned.arr = (int[][]) arr.clone();
for (int i = 0; i < arr.length; i++) {
cloned.arr[i] = (int[]) arr[i].clone(); // 二维整型数组按行克隆
}
cloned.a = (int[]) a.clone(); // 一维整型数组克隆
return cloned;
}
@Override
/* 覆盖Object中的equals()方法 */
public boolean equals(Object obj) {
// TODO Auto-generated method stub
boolean b = true;
if(this == obj) {
return true;
}
if(obj == null) {
return false;
}
if (obj instanceof DeepClone) {
DeepClone cloned = (DeepClone) obj;
int[][] a = cloned.getArr();
outer: for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] != a[i][j]) {
b = false;
break outer;
}
}
}
}
return b;
}
@Override
/* 覆盖Object中的hashCode()方法 */
public int hashCode() {
// TODO Auto-generated method stub
int h = 0;
// String s = "1";
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
h += Integer.valueOf(arr[i][j]);
}
}
return h; //以数组元素之和作为返回值
}
@Override
/* 覆盖Object中的toString()方法 */
public String toString() {
// TODO Auto-generated method stub
String s = "";
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
s += String.valueOf(getArr()[i][j]);
}
}
return s;
}
public int[][] getArr() {
return arr;
}
public void setArr(int[][] arr) {
this.arr = arr;
}
public int[] getA() {
return a;
}
public void setA(int[] a) {
this.a = a;
}
}