有什么办法维护排序的对象数组吗?对象排序阵列
例如,如果我有一个特性ID,日期,姓名和这些对象的集合对象:
$col = array();
public function addNewObject($id, $date, $name)
{
$col[] = new Object($id, $date, $name);
//but instead of appending, it should place it by Name desc
}
如果我把类似getObjects,它会按名称返回集合中的项递减。
我认为有一些答案让按照排序顺序返回对象,但为了提高效率,我认为最好在insert中排序,因为在我的情况下,“sort by”变量永远不会改变。
UPDATE: 因此,基于该意见,我应该诉诸整个阵列每次添加的东西,但似乎有点内存密集型...
由于数组将始终处于有序,以首先我可以通过遍历数组来确定我想要插入的位置(这是否有效,有没有更好的方法?)。一旦我发现如何“插入”一个新的对象到数组中?
我不认为这个数组会非常大,但我想实现这个最有效的方式。
你可以克隆一个数组对象来维护它的旧命令并重新排列克隆。 – thegrunt
维护此类订单的一种方法是在添加新项目后再度过整个数组。 –
以@thegrunt的答案为基础,如果您在添加元素之后对数组进行排序,您将在需要时对其进行排序。由于您总是希望它以相同的方式排序,这意味着多次访问数组不会导致多种排序。无论如何,插入正确的位置需要一些“排序”(即确定新元素的位置)。根据你阵列的大小,你可能不值得花费额外的工作。 – Floris