List和ArrayList删除方法都不起作用

Iri*_*ith -1 java arraylist

今天我有一个比昨天更愚蠢的问题,但我真的不明白为什么我的代码不起作用.

代码如下:

public class A{
    List fileList;

    public A(List fl){
        fileList = new ArrayList<String>;
        if(fl != null) {
            fileList = fl;
        }
    }

    public void removeFiles(List fl){
        for(Object obj : fl) {
            fileList.remove(obj.toString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了在网络上发现的每一件事,即使有一个Iterator但没有文件被删除,也没有出现错误或异常!

一些更多的代码

public class CoordinationServer extends Activatable implements CoordinationSerInt
{
List<CoordObj> userList;
public int updateFileList(String username, List files, int option) throws RemoteException{
    for (CoordObj anUserList : userList) {
        if (anUserList.getUsername().equals(username)) {
            if(option == 0){
                anUserList.setFileList(files);
                return 1;

            }else if(option == 1){
                anUserList.addFilesToList(files);
                return 1;

            }else if(option == 2){
                anUserList.removeFiles(files);
                return 1;
            }
            return 0;
        }
    }
    return -1;
}
}

public class CoordObj implements Serializable
{
UserForUser userReference;
List fileList;
String username;

public CoordObj(UserForUser ur, List fl, String un) {
  userReference = ur;
  fileList = new ArrayList<String>();
  if(fl != null)
    fileList = fl;
  username = un;
}

public void removeFiles(List fl){
  this.fileList.removeAll(fl);
}
}
Run Code Online (Sandbox Code Playgroud)

议决 如果别人有这个问题,我用这种方式解决它:

fileList.removeAll(Arrays.asList(fl.toArray()));
Run Code Online (Sandbox Code Playgroud)

Nim*_*sky 9

你正在调用对象toString()方法,不要这样做.只需使用对象本身.

for(Object obj:fl){
  fileList.remove(obj);
}
Run Code Online (Sandbox Code Playgroud)

这将删除btw列表中的所有内容,因此您可以执行clear().