클래스 Foo 클래스와 클래스 Boo.Foo 클래스에는 Boo 클래스의 arraylist가 포함되어 있습니다. 나는 Foo 클래스의 깊은 복사본을 만들어야하고 Foo 자체의 arraylist를 만들고있다. 이것을 어떻게 할 수 있습니까?arraylist를 포함하는 arraylist 복사하기
Class Foo{
ArrayList<Boo> boovar = new ArrayList<Boo>();
}
Class Boo{
int x;
void add_x(int y)
{
x=y;
}
}
ArrayList<Foo> foovar = new ArrayList<Foo>();
..adding elements to foovar.
지금 나는 foovar에있는 개체의 깊은 복사가되도록, Foo 타입의 ArrayList에의 foovar1을 만들려고합니다. 즉, foovar에서 boo 객체를 수정하면 x를 삭제하거나 요소를 추가하는 것과 같이 foovar1에 액세스 할 때 반영되어서는 안됩니다.
나는 딥 복사가 죽을 때까지 맞았다는 것을 알고 있지만 실제로이 작업을 수행하는 방법을 알려주는 기사를 찾을 수 없습니다. 누군가 코드를 어떻게 보여줄 수 있습니까?
편집 :
임 언급 한 코멘트처럼, 푸 내에서 복사 생성자를 만들려고하지만, 내가 푸의 생성자를 통해 서로에 우우의 ArrayList를 복사하는 방법에 대한 손실에 정말입니다. 아라 일리안에서 Foo의 인스턴스를 어떻게 복제 할 것인가는 말할 것도 없습니다. 어떤 도움이라도 정말 감사 할 것입니다!
당신은 루프를 사용하고리스트의 딥 카피를 만들기 위해'Foo' 클래스에 생성자를 복사해야한다고 생각합니다. 왜냐하면, 당신은 당신의 List의 deep copy뿐만 아니라 당신의 List에있는'Foo' 인스턴스의 deep copy를 필요로하기 때문입니다. –
"Java deep copy"를 여기에서 찾으려고 했습니까? 너는 많은 포스트를 얻을 것이다. 어떤 것은 도서관을 가리키고 다른 도서관은 정보와 팁을 가지고 있습니다. 그 후에도 여전히 특정 질문이 있으면 물어볼 수 있습니다. 이 질문을 귀하의 질문에 관련이있을 수 있습니다 : http://stackoverflow.com/questions/3291830/deep-copy-and-arraylist-java –
추상 '목록', 귀하의 변수를 선언하지 콘크리트. 좋은 습관입니다. –
Bohemian