存储被阻止的行的集合

时间:2012-02-02 11:47:43

标签: java collections

我正在创建一个应用程序,用户将通过网络在共享文档上键入内容。 其中一个问题是阻止其他用户输入的行。 为此,我有一个DocumentListener正在检查行更改。当用户成功移动到新行(这意味着未使用该行)时,侦听器将通知其他用户该行现在已被使用。

如果该行被阻止,则DocumentFilter会在每次进行编辑时进行检查,然后再允许。

现在,我关注的一个问题是什么样的集合最适合存储行号。该集合将仅持有Integer。当一行被阻止时,它将被添加到该集合中。当DocumentFilter需要检查一行是否可用时,它将通过该列表。此外,当使用该行的用户移动到新行时,将发送另一条消息,该消息将从用户集合中删除该行。

我知道ArrayList可能就足够了,虽然我希望有人可能会有所不同。

3 个答案:

答案 0 :(得分:2)

如果用户添加新行怎么办?必须重新定位/重新编号每个存储的行。 如果用户退出程序或程序崩溃或只是他回家吃饭怎么样?你实现了某种超时吗?

无论如何,SortedSet会这样做,但你也许应该在设置项目中存储过期时间..

答案 1 :(得分:0)

如果您预计会有大量的Lookup和大量被阻止的文档,那么

HashSet<Integer>将大幅超越ArrayList<Integer>

据我所知,最坏情况查找(指“包含”)是

  • O(n) - ArrayList
  • O(log2(n)) - SortedList
  • O(1) - HashSet但是这与哈希方法有关..

如果您需要按锁定跟踪其他数据,可以考虑使用HashMap<Integer, ILockInformation>

答案 2 :(得分:0)

由于您需要单一性,List绝对不是正确的集合:您需要Set