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 に答える