黑马程序员技术交流社区
标题:
集合方面的问题
[打印本页]
作者:
李伟
时间:
2012-6-26 14:15
标题:
集合方面的问题
import java.util.*;
class ArrayTest1
{
public static void main(String[] args)
{
ArrayList<String> aList=new ArrayList<String>();
aList.add("edae"); aList.add("ee");
aList.add("abc"); aList.add("efj3os");
aList.add("abc"); aList.add("ab1c");
aList.add("efjdsdos");
System.out.println("原集合中成员:"+aList);
getNewList(aList);
System.out.println("查询后的集合:"+aList);
}
public static void getNewList(ArrayList<String> aList)
{
int m=0;
for(String a:aList)//运行后出现异常,不知道这里出现了什么问题
{
String s=aList.get(m);
if(s.equals("abc"))
{
aList.remove(m--);
}
else
System.out.println(s);
m++;
}
}
}
作者:
党传才
时间:
2012-6-26 14:36
你把循环改成普通循环就行了
作者:
邓杰
时间:
2012-6-26 14:38
因为你用增强for循环;增强for循环是for循环的简化版,虽然可以很方便的迭代数组和集合;但它有一个特点就是只能迭代,不能操作原数组和集合中的元素;
如果要实现增删改查的功能,就必须使用普通的for循环;详见毕老师的视频;、
import java.util.*;
class ArrayTest1
{
public static void main(String[] args)
{
ArrayList<String> aList=new ArrayList<String>();
aList.add("edae"); aList.add("ee");
aList.add("abc"); aList.add("efj3os");
aList.add("abc"); aList.add("ab1c");
aList.add("efjdsdos");
System.out.println("原集合中成员:"+aList);
getNewList(aList);
System.out.println("查询后的集合:"+aList);
}
public static void getNewList(ArrayList<String> aList)
{
/*int m=0;
for(String a:aList)//运行后出现异常,不知道这里出现了什么问题//这里用的增强for循环,
{
String s=aList.get(m);
if(s.equals("abc"))
{
aList.remove(m--);
}
else
System.out.println(s);
m++;
}*/
for (int m=0;m<aList.size() ;m++ )//应该保用普通的for循环还实现功能;
{
String s=aList.get(m);
if (s.equals("abc"))
{
aList.remove(m--);
}
}
}
}
作者:
李天甲
时间:
2012-6-26 14:44
本帖最后由 李天甲 于 2012-6-26 14:51 编辑
for (String a :aList)
呵呵,高级for循环中是不能针对集合进行增删操作的..
如果操作了的话很可能会导致for循环出错...
你可以这样操作
Iterator<String> it = aList.iterator();
while (it.hasNext()) {
String a = (String) it.next();
if (a.equals("abc")) {
it.remove();
} else
System.out.println(a);
}
作者:
谭立文
时间:
2012-6-26 14:56
import java.util.*;
class ArrayTest1
{
public static void main(String[] args)
{
ArrayList<String> aList=new ArrayList<String>();
aList.add("edae"); aList.add("ee");
aList.add("abc"); aList.add("efj3os");
aList.add("abc"); aList.add("ab1c");
aList.add("efjdsdos");
System.out.println("原集合中成员:" + aList);
ArrayTest1.getNewList(aList);
System.out.println("查询后的集合:"+aList);
}
public static void getNewList(ArrayList<String> aList)
{
int m=0;
for(String a:aList)//运行后出现异常,不知道这里出现了什么问题
{
String s=aList.get(m);
if(s.equals("abc"))
{
//aList.remove(m--); //加强for的缺点是在遍历集合过程中不能对集合本身进行操作
}
else
{
System.out.println(s);
}
m++;
}
}
}
加强for的缺点是在遍历集合过程中不能对集合本身进行操作
作者:
李文龙
时间:
2012-6-26 15:08
for(String a:aList) 增强for循环的特点是只能迭代,不能对集合的值进行改变,所以程序运行的时候会抛出异常,改为一般for循环即可,详见 3 楼
作者:
邓杰
时间:
2012-6-27 07:46
邓杰 发表于 2012-6-26 14:38
因为你用增强for循环;增强for循环是for循环的简化版,虽然可以很方便的迭代数组和集合;但它有一个特点就 ...
一定黑马见
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2