4

所以我在我的代码中遇到了一个小问题:

synchronized(clients)
            clients.remove(this);
}

因为当客户端断开连接时,但现在我需要能够将该客户端的名称发送给所有其他客户端,为此我基本上需要做类似的事情

synchronized(clients)
            broadcast("Remove:"+clients.get(this).name);
            clients.remove(this);
}

但显然我无法获得带有“this”的索引,那么我该如何获取正确的客户名称呢?谢谢!

4

4 回答 4

13

你为什么不简单地使用this.name?既然已经有了对象,为什么还需要获取索引才能再次获取对象?

编辑:

要回答标题中的问题(获取对象的索引),请使用indexOf

于 2012-09-01T05:01:21.823 回答
5

你看过ArrayList中的indexOf函数吗?

于 2012-09-01T05:19:13.293 回答
3
int index = clients.indexOf(this);
// Do what ever...
clients.remove(index); // or clients.remove(this);
于 2012-09-01T05:19:57.960 回答
-1

我认为您想从列表中删除特定对象。如果您从代码中获取索引

int index = clients.get(this)

然后你可以轻松删除

clients.remove(index);

或者如果您从列表中获取对象然后删除

clients.remove(object) // remove by object
于 2012-09-01T05:13:10.613 回答