public
class
DeepCopy2DArray {
static
class
MyClass {
int
value;
MyClass(
int
value) {
this
.value = value;
}
}
public
static
void
main(String[] args) {
MyClass[][] originalArray = {
{
new
MyClass(
1
),
new
MyClass(
2
)},
{
new
MyClass(
3
),
new
MyClass(
4
)}
};
MyClass[][] deepCopiedArray = deepCopy2DArray(originalArray);
originalArray[
0
][
0
].value =
99
;
System.out.println(
"Original Array:"
);
print2DArray(originalArray);
System.out.println(
"\nDeep Copied Array:"
);
print2DArray(deepCopiedArray);
}
private
static
MyClass[][] deepCopy2DArray(MyClass[][] originalArray) {
int
rows = originalArray.length;
int
cols = originalArray[
0
].length;
MyClass[][] copiedArray =
new
MyClass[rows][cols];
for
(
int
i =
0
; i < rows; i++) {
for
(
int
j =
0
; j < cols; j++) {
copiedArray[i][j] =
new
MyClass(originalArray[i][j].value);
}
}
return
copiedArray;
}
private
static
void
print2DArray(MyClass[][] array) {
for
(MyClass[] row : array) {
for
(MyClass element : row) {
System.out.print(element.value +
" "
);
}
System.out.println();
}
}
}