gpt4 book ai didi

java - 如何将客户存储在列表中

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:41 26 4
gpt4 key购买 nike

我正在运行一个服务器,我有一个客户端类型的数组列表当客户端连接通过 ServerSocket.accept()我将新的 Socket 传递给 arraylists 构造函数。这是构造函数中的所有内容

this.add(new Client(Socket client));

我的问题是,当客户端断开连接时,它会关闭套接字,但不会删除它在数组列表中的位置,并将所有内容都向下移动一位。所以 arraylist 不断变大。

我可以做什么/使用什么来解决这个问题?

有时我会运行将在所有客户端上执行的命令,这就是我将客户端存储在数组列表中的原因。

在服务器中存储客户端是否有更好的选择?

更新 1

类(class)处于开始阶段。实现的很少。到目前为止,答案中建议的 HashMap 选项最适合我。谢谢你的回复

最佳答案

有趣的问题。

你应该在这里使用散列映射.. 添加以对象作为值的客户端并使用一些键。每当您断开连接时,将其从 map 上移除。

一个很好的问题是什么应该是关键?可能是对象引用(取决于您的选择)或任何相对于客户端对象唯一的东西(必须有一些东西,如果没有,您可以轻松生成它)。

Map<Integer,Client> clientMap = new HashMap<Integer,Client>();

关于java - 如何将客户存储在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com