java中的List的remove问题

privatestaticBriefContact[]method1(String[]strs,BriefContact[]persons){List<BriefCont... private static BriefContact[] method1(String[] strs, BriefContact[] persons) {
List<BriefContact> data = new ArrayList<BriefContact>();
List<BriefContact> list = new ArrayList<BriefContact>();

for (BriefContactInfo person : persons) {
boolean b = list.add(person);
System.out.println(b);
for (String str : strs) {
if (str.equals(person.getEmail())) {
data.add(person); // 重复元素
boolean f = list.remove(person);
System.out.println(f);
}
}
}

list.addAll(0, data);
BriefContact[] list1 = new BriefContact[list.size()];
list.toArray(list1);
return list1;
}
在remove的时候总是不成功,F的值始终都是false
展开
 我来答
sky_solo
2013-08-20 · TA获得超过186个赞
知道答主
回答量:60
采纳率:0%
帮助的人:61.7万
展开全部

首先你的程序这部分没有语法问题,而且,就算分析来看,remove只有在str与person的email相同时才回执行,而执行的就是remove掉你刚加进去的person,所以不可能是false的,你可以debug单步调试下你的程序,看看逻辑上有没有什么差错,还有list.toArray(list1);    return list1;这两行代码你想表示什么?

追问
这个地方,语法肯定没有问题,逻辑也肯定没有问题,如果不信的话,你可以试试看,我也可以告诉你个很奇怪的地方,就是在控制台没问题,放到实际的使用就会出现无法remove,如果不信你可以试试看,另外那两行没什么意思,就是实际中的需要而已。
百度网友e544dfd
2017-01-12 · TA获得超过1636个赞
知道小有建树答主
回答量:626
采纳率:0%
帮助的人:108万
展开全部
抛出异常java.util.ConcurrentModificationException。【解决办法】
如果想要在迭代的过程中,执行删除元素操作怎么办?
再来看看内部类Itr的remove()方法,在删除元素后,有这么一句expectedModCount =
modCount,同步修改expectedModCount
的值。所以,如果需要在使用迭代器迭代时,删除元素,可以使用迭代器提供的remove方法。对于add操作,则在整个迭代器迭代过程中是不允许的。
其他集合(Map/Set)使用迭代器迭代也是一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
度zkq
2013-08-20 · TA获得超过123个赞
知道答主
回答量:133
采纳率:0%
帮助的人:93万
展开全部
对于所有数组/列表/map等等以组的形式存储数据的结构.当你在遍历他们的时候请不要进行remove或者add之类的操作.因为这会改变该数据的结构,从而导致一些错误.
追问
实践证明,这个结构无关,而且我这并不是错误,只是执行不成功而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zeus_flo
2013-08-20 · TA获得超过118个赞
知道答主
回答量:95
采纳率:0%
帮助的人:68.7万
展开全部
remove(object)
object必须equals你要移除的object
追问
这是一个循环,再没有进行下一个循环之前,object必须是一个啊!
追答
用remove(index)试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式