如何使用Hashmap过滤多线程中的数据以服务多个客户端

时间:2012-07-06 11:22:06

标签: java multithreading hashmap

hashmap中的示例数据存储为,

e.g。 { “客户端1-DATA1”:DATA1, “客户端2-DATA2”:DATA2 “client3-DATA3”:DATA3 “client4-DATA4”:DATA4, “客户端1-DATA2”:DATA2, “客户端2-DATA1”:DATA1,” client3-DATA4 “:DATA4,” client4-DATA3" :DATA3}

每个客户都可以重复每个数据,密钥将是唯一的,因为client1-data1组合值将重复,但密钥将是唯一的。

处理多个客户的问题,

对于每个用户,在建立连接时会创建一个不同的线程,因此每个线程都会创建一个PrintWriter对象,该对象将被添加到Arraylist中

List writers = new ArrayList();

无论如何,我可以将client_id与Printwriter对象一起存储在同一个数组中,并将数据传递给客户端,同时使用上面示例中存储在Hashmap中的客户端ID过滤数据。

请回复/建议

感谢, Praveen T

2 个答案:

答案 0 :(得分:0)

您可以使用存储一对元素的集合。关于这样做的一个方法是使用Map。

Map<PrintWriter, String> writeAndClientId = new HashMap<>();

您可以使用

循环播放这些内容
for(Map.Entry<PrintWriter, String> entry: writeAndClientId.entrySet())

如果您希望能够一次获得一个clientId,则可以使用

Map<String, PrintWriter> clientIdToWriter = new HashMap<>();

PrintWriter pw = clientIdToWriter.get(clientId);

答案 1 :(得分:0)

打印机和客户端是唯一的,因此请使用Set(无重复ID)或HashMap并管理以下内容:

final HashMap<Writer, HashMap<Integer, List<String>>> writers = new HashMap<Writer, HashMap<Integer, List<String>>>();

如果我误解了某些内容,请告诉我们。