简体   繁体   English

Java-Vector类中的remove方法始终返回True

[英]Java - remove method in Vector class always returns True

Here i have my method 我在这里有我的方法

System.out.println("removeConnectedUser called. size connectedUsers="+connectedUsers.size());
if(connectedUsers.remove(conUser));
{
  System.out.println("Removing user "+conUser.conn.getRemoteSocketAddress().toString()+"..."+connectedUsers.size());
  writeUserAction(conUser.conn.getRemoteSocketAddress().toString(),"999");
  try
  {
    conUser.conn.close();
  }catch(IOException e){
      System.out.println("Exception in removeConnectedUser");
  }
  ServerMainPanel.updateConnectedUsers(connectedUsers.size());
}

The problem is that this method may be called more than one time, so it's executed more than necessary. 问题在于此方法可能被调用多次,因此执行的次数超过了必要。 To filter bad calls, i've added if(connectedUsers.remove(conUser)); 为了过滤坏电话,我添加了if(connectedUsers.remove(conUser)); but this always return true! 但这总是返回true! It is the console output 它是控制台输出

Error in liveUpdate:java.net.SocketException: Connection reset by peer: socket write error
removeConnectedUser called. size connectedUsers=1
Removing user /10.175.33.179:4085 ...0
Error liveSecUpdate:java.net.SocketException: Socket closed
removeConnectedUser called. size connectedUsers=0
Removing user /10.175.33.179:4085 ...0

So, vector.remove always returns True, even if vector's size is Zero. 因此,即使vector的大小为零,vector.remove始终返回True。 1- it's impossible element is removed if size()=0, 2- impossible i'm having two instances of the same object in this vector, because i have connected just one client 1-如果size()= 0,则删除不可能的元素,2-不可能,我在此向量中具有同一对象的两个实例,因为我只连接了一个客户端

You have a spurious semicolon at the end of the if : if末尾有一个假冒的分号:

if(connectedUsers.remove(conUser));
                                  ^ REMOVE THIS

This makes the code block that follows execute irrespective of the if condition. 这使得无论if条件如何,后续代码块都可以执行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM