Huy*_* Tử 4 java element list addition
最近我的java项目因为我的理解出现了错误。我有以下代码:
Post post = new Post(); // Post is my custom class
List<Post> list = new ArrayList<Post>();
for( int i = 0; i < num; i++){
post.setTitle( TITLE[i] ); //TITLE[] is a array of String.
list.add(post);
}
Run Code Online (Sandbox Code Playgroud)
之后 List 列表中的所有元素都相同并且等于标题为 TITLE[num-1] 的帖子。我知道我对这个问题有误解,因为当我把构造函数
Post post = new Post();
Run Code Online (Sandbox Code Playgroud)
在 for 循环内,一切都很好。但有人可以帮我解释一下吗?非常感谢。
您刚刚创建了一个Post对象,所以在这一行中
post.setTitle( TITLE[i] ); //TITLE[] is a array of String.
list.add(post);
Run Code Online (Sandbox Code Playgroud)
您只需更改其标题Post并将其添加到list. 最后,你将只有一次, 但多次。Postlist
为什么?因为事实上,对象是对内存中位置的引用,因此您在每次迭代中添加相同的引用(相同的位置)。
你能怎样解决它?您可以在每次迭代时创建一个新对象:
for( int i = 0; i < num; i++){
Post post = new Post();
post.setTitle( TITLE[i] );
list.add(post);
}
Run Code Online (Sandbox Code Playgroud)