我正在创建一个应用程序,用户将通过网络在共享文档上键入内容。
其中一个问题是阻止其他用户输入的行。
为此,我有一个DocumentListener
正在检查行更改。当用户成功移动到新行(这意味着未使用该行)时,侦听器将通知其他用户该行现在已被使用。
如果该行被阻止,则DocumentFilter
会在每次进行编辑时进行检查,然后再允许。
现在,我关注的一个问题是什么样的集合最适合存储行号。该集合将仅持有Integer
。当一行被阻止时,它将被添加到该集合中。当DocumentFilter
需要检查一行是否可用时,它将通过该列表。此外,当使用该行的用户移动到新行时,将发送另一条消息,该消息将从用户集合中删除该行。
我知道ArrayList
可能就足够了,虽然我希望有人可能会有所不同。
答案 0 :(得分:2)
如果用户添加新行怎么办?必须重新定位/重新编号每个存储的行。 如果用户退出程序或程序崩溃或只是他回家吃饭怎么样?你实现了某种超时吗?
无论如何,SortedSet会这样做,但你也许应该在设置项目中存储过期时间..
答案 1 :(得分:0)
HashSet<Integer>
将大幅超越ArrayList<Integer>
。
据我所知,最坏情况查找(指“包含”)是
ArrayList
SortedList
HashSet
但是这与哈希方法有关.. 如果您需要按锁定跟踪其他数据,可以考虑使用HashMap<Integer, ILockInformation>
。
答案 2 :(得分:0)
由于您需要单一性,List
绝对不是正确的集合:您需要Set
。