//在remove一条信息时,
ArrayList的大小已经改变(即list.size()已经改变);
在i大于等于list.size()时,循环跳出,后便的ArrayList不能再执行;
所以必须在remove的同时,执行i--,即i=i-1;
现在才能遍历所有List中的信息。也不能在用Iterator遍历时使用remove,会抛异常。
public class TrickyAL {
public
static LinkedList<User> llu=new
LinkedList<User>();
public
static HashMap<String,User> hmu=new
HashMap<String,User>();
public
static ArrayList<User> ulist=new
ArrayList<User>(Arrays.asList
(new
User[]{
new User(2,"Eric"),
new User(3,"Eric"),
new User(1,"Aaron"),
new User(4,"Eric")
}
));
static{
llu.add(new User(1,"Aaron"));
llu.add(new User(2,"Eric"));
llu.add(new User(3,"Tom"));
hmu.put("1",new User(3,"Tom"));
hmu.put("2",new User(2,"Eric"));
hmu.put("3",new User(1,"Leo"));
hmu.put("3",new User(4,"Scott"));
}
public
static void
deleteUser(ArrayList<User>
urlist,String auser){
Iterator itr=urlist.iterator();
int c=urlist.size();
for(int i=0;i<c;i++){
if(auser.equals(urlist.get(i).name)){
urlist.remove(i);
i--;
c--;
}
}
}
public static void
deleteUser(LinkedList<User>
urlist,String auser){
Iterator itr=urlist.iterator();
int c=urlist.size();
|