我有一个HashSet,它是客户端套接字的集合。当客户端连接时,套接字将添加到HashSet。然后我需要访问该套接字,但我不知道如何在HashSet中访问它。
...
clientSockets.Add(listenerSocket.EndAccept(async));
WaitForData(lastAddedSocket);
....
我如何确定lastAddedSocket
是什么?
答案 0 :(得分:6)
没有办法问HashSet“你最后添加的内容是什么?”订单全都乱七八糟。
您应该只保留一个名为lastAddedSocket
的单独变量。每次向HashSet添加套接字时,也要将其分配给lastAddedSocket
。然后,您将能够在不断的时间内轻松查找。
答案 1 :(得分:2)
通常可以理解,无法保证哈希集的顺序。虽然Java文档出来了,并且说MSDN最接近的是
集合是一个不包含重复元素的集合,其元素没有特定的顺序。
感谢:Does HashSet preserve insertion order?
也就是说,你自己保留最后一个插座应该相当容易。
答案 2 :(得分:0)
当你删除最后一个时,你可能希望你的上一个是前一个。我建议使用Queue<>除了HashSet之外,您还可以随时记住它们到达的顺序,以防最后消失。