如何访问添加到HashSet的最后一个对象?

时间:2011-02-08 02:02:31

标签: c# hashset

我有一个HashSet,它是客户端套接字的集合。当客户端连接时,套接字将添加到HashSet。然后我需要访问该套接字,但我不知道如何在HashSet中访问它。

... 
clientSockets.Add(listenerSocket.EndAccept(async));
WaitForData(lastAddedSocket);
....

我如何确定lastAddedSocket是什么?

3 个答案:

答案 0 :(得分:6)

没有办法问HashSet“你最后添加的内容是什么?”订单全都乱七八糟。

您应该只保留一个名为lastAddedSocket的单独变量。每次向HashSet添加套接字时,也要将其分配给lastAddedSocket。然后,您将能够在不断的时间内轻松查找。

答案 1 :(得分:2)

通常可以理解,无法保证哈希集的顺序。虽然Java文档出来了,并且说MSDN最接近的是

  

集合是一个不包含重复元素的集合,其元素没有特定的顺序。

感谢:Does HashSet preserve insertion order?

也就是说,你自己保留最后一个插座应该相当容易。

答案 2 :(得分:0)

当你删除最后一个时,你可能希望你的上一个是前一个。我建议使用Queue<>除了HashSet之外,您还可以随时记住它们到达的顺序,以防最后消失。