list.addall()后iterator循环删除,原有数据也改变了

zzzhehe 2018-10-10 02:11:32
mGradeList.clear();
mGradeList.addAll(AllDataBean.getInstance().mGradeList);
Iterator<Grade> mgradeIterator = mGradeList.iterator();
while (mgradeIterator.hasNext()) {
Grade grade = mgradeIterator.next();
Iterator<Classes> classIterator = grade.getmTheClass().iterator();
while (classIterator.hasNext()) {
Classes classes = classIterator.next();
if (!classes.getClass_id().equals(classid)) {
classIterator.remove();
}
}
}

Iterator<Grade> gradeIterator = mGradeList.iterator();
while (gradeIterator.hasNext()) {
Grade grade = gradeIterator.next();
if (grade.getmTheClass().size() == 0) {
gradeIterator.remove();
}
}
为什么AllDataBean.getInstance().mGradeList值会改变
...全文
1069 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chshru1995 2018-10-18
  • 打赏
  • 举报
回复
用mGradeList.addAll(AllDataBean.getInstance().mGradeList.clone());试试
zzzhehe 2018-10-17
  • 打赏
  • 举报
回复
但是我这边使用循环add() Grade.clone())也无效,不在这个工程 另建简单demo clone()方法又起作用。什么原因呢?
阿飞__ 2018-10-13
  • 打赏
  • 举报
回复 1
非基本数据类型传递的都是引用,所以你 add 添加的也是对象的引用,修改的话都会被修改的

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧