今天我有一个比昨天更愚蠢的问题,但我真的不明白为什么我的代码不起作用.
代码如下:
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)
你正在调用对象toString()方法,不要这样做.只需使用对象本身.
for(Object obj:fl){
fileList.remove(obj);
}
Run Code Online (Sandbox Code Playgroud)
这将删除btw列表中的所有内容,因此您可以执行clear().
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |