下面是具体的代码:请改正一下,谢谢!
/*
* 通过姓名删除用户信息
*/
public boolean Delete(String name){
boolean isDel=false;//删除是否成功
for(Data data:list){
if(data.getName().equals(name)){
list.remove(name);
isDel=true;
}
}
return isDel;
}
/*
* 按照指定的姓名删除用户信息
*/
public void Delete(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要删除的用户姓名:");
String name=sc.next();
boolean n=s.Delete(name);
if(n==false){
System.out.println("你要删除的用户不存在");
}else
System.out.println("删除用户成功!");
}
/*
* 通过姓名删除用户信息
*/
public boolean Delete(String name){
boolean isDel=false;//删除是否成功
for(Data data:list){
if(data.getName().equals(name)){
list.remove(name);
isDel=true;
}
}
return isDel;
}
/*
* 按照指定的姓名删除用户信息
*/
public void Delete(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要删除的用户姓名:");
String name=sc.next();
boolean n=s.Delete(name);
if(n==false){
System.out.println("你要删除的用户不存在");
}else
System.out.println("删除用户成功!");
}
应该是这样的吧
这行没报错?
list.remove(data);
Data data = null;
for (int i = 0 ; i < list.size();){
data = (Data)list.get(i);
if(data.getName().equals(name)){
list.remove(i);
} else {
i++;
}
}
要删除一个对应的对象,而不是一个属性
int size = list.size();
for (int i=size-1 ; i>= 0;){
data= (Data)list.get(i);if(data.getName().equals(name)){
list.remove(i);
}else {
i--;
}
}
这样就不需要整个循环了,直接删Data temp=new Date();
temp.setName(name);
list.remove(temp);
remove方法是可以有返回值的
或者说list.remove(i);
这样才对。
这种for循环是利用了Iterator,而集合的Iterator在迭代的时候进行增删操作后继续迭代就会抛异常。
ArrayList 只能根据索引或者对象删除
想要删除不能用增强的for循环,否则会出现concurrentmodificationexception,建议用Iterator,然后用Iterator.remove()