ruby是否有一个列表类型,可以将内容排序为添加/删除?

Her*_*rms 10 ruby sortedlist

我需要Ruby中的数据结构,它可以在添加或删除元素时对其元素进行排序,并允许(至少)从列表中弹出第一个元素.

我在ruby文档中找到的最接近的东西是SortedSet.但是,这似乎没有提供任何方式来通过索引访问元素(甚至关闭第一个元素)

这些是我需要的具体操作:

  • 将对象添加到列表中
  • 弹出列表中的第一个对象
  • 检查对象是否在列表中
  • 从列表中删除对象(按对象,而不是按索引)

ruby有没有内置的东西,或者是否有任何我能抓到的图书馆可以给我?我可以毫不费力地实现一个,但如果可能的话,我宁愿使用预先存在的一个.

目前我正在使用Ruby 1.8,虽然切换到1.9可能没问题.

编辑:

由于似乎存在一些混淆,我需要的排序不是插入对象的顺序.我需要根据<=>运营商进行排序.通常我会弹出第一个元素,处理它(可能生成新元素),向列表中添加新元素,然后重复.添加的元素最终可能会在排序顺序中的任何位置结束,而不仅仅是在最后.

jsp*_*cal 5

可能希望为执行此操作的红黑树(Ruby / RBTree)分配此1.8兼容的gem:

http://www.geocities.co.jp/SiliconValley-PaloAlto/3388/rbtree/README.html

树始终保持平衡,对树的操作为O(log N)

这里还有一个红黑树实现:

http://github.com/kanwei/algorithms

容器:: RubyRBTreeMap