黑马程序员技术交流社区
标题: 删除其中所有值为"abc"的字符串元素 [打印本页]
作者: suiabing 时间: 2012-5-3 21:47
标题: 删除其中所有值为"abc"的字符串元素
int size =alist.size();
for(int i = 0; i < size;i++) {
if("abc".equals(alist.get(i))){
alist.remove(i);; //运行失败,
}
}
删除其中所有值为"abc"的字符串元素 如何实现呢
{"aaa","abc","abc","adg","abc"}
作者: Friends★ 时间: 2012-5-3 22:25
/*集合的做法:
*
* 希望可以帮到你。
* */
import java.util.*;
class Test20
{
public static void main(String args[])
{
ArrayList al= new ArrayList();
al.add("aaa");
al.add("abc");
al.add("abc");
al.add("adg");
al.add("abc");
ListIterator li=al.listIterator();
while(li.hasNext())
{
Object obj=li.next();
if(obj.equals("abc"))
{
li.remove();
}
}
sop(al);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
运行结果:
[aaa, adg]
作者: suiabing 时间: 2012-5-3 22:28
Friends★ 发表于 2012-5-3 22:25
/*集合的做法:
*
* 希望可以帮到你。
源代码别给人家改掉!改for循环体,这个是一个小考题
作者: 贾联国 时间: 2012-5-3 22:41
本帖最后由 贾联国 于 2012-5-3 22:43 编辑
本来size是4,你循环给删了个值,集合长度是3了,可你的size还是4,肯定会角标越界异常的!
for(int i = 0; i < size;i++) {
if("abc".equals(alist.get(i)))
{ System.out.println(1);
alist.remove(i);
size--; //注意这里
}
作者: 魏征 时间: 2012-5-3 22:42
用ListIterator进行迭代
ListIterator<String> lt=alist.listIterator();
while (lt.hasNext())
{
String s=lt.next();
if ("abc".equals(s))
{
lt.remove();
}
}
System.out.println(alist);
作者: 陈苓 时间: 2012-5-3 22:50
有个linkenItertor可以做到在迭代元素的过程中实现增删改
作者: 符云爵 时间: 2012-5-4 10:28
3楼解释是清楚了,但是代码还是有bug的,比如说,集合里总共有5条数据:“qqq”,"www","abc","abc","aaa",这样一来,当i加到2时,也就是到了第三条,这个时候条件符合了,把该条移除,而循环到下次时i还是会+1的,那就要注意了,后边的数据,从第4条开始,它会往上移,也就是说一开始下标为3的在移除本来下标为2的那项之后,它的下标跟着会变为2,但i依然+1,这样你就不会再循环到本来下标为3的那条数据了(因为移除第一条之后它的下标已经变为2).如果一定要用for循环的话,考虑下下面的代码,不过要注意不要进死循环了:
List<String> list = new ArrayList<String>();
list.add("adsd");
list.add("asww");
list.add("abc");
list.add("abc");
list.add("ff");
list.add("fcxasd");
for (int i = 0; i < list.size();) {
if(list.get(i).equals("abc")){
list.remove(i);
}else{
i++;
}
}
作者: 褚代江 时间: 2012-5-4 10:41
符云爵 发表于 2012-5-4 10:28
3楼解释是清楚了,但是代码还是有bug的,比如说,集合里总共有5条数据:“qqq”,"www","abc","abc","aaa", ...
顶7楼。讲的很透彻,巩固了这种for(*;*;){*}的使用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |