在NSMutableArray的开头添加一个对象?

50

有没有一种有效的方法将对象添加到 NSMutableArray 的开头?我正在寻找一个好的双向队列,在 Objective-C 中也可以使用。

2个回答

111

简单地说

[array insertObject:obj atIndex:0];

请查看文档


4
使用此方法时需要考虑的几个事项。如果数组为空,则只能在索引0处插入对象。因此,如果数组包含5个对象,则可以在第5个索引处插入对象。试图在第6个索引处插入值将导致异常。 - EmptyStack
41
如果索引已被占用,则从该索引开始的对象将通过将其索引加1来移动,以腾出空间。 - Malloc
非常感謝這個。我是一個初學者,曾經想過用 for 循環來為我完成所有這些......哦天啊....... 這無疑簡單了許多。 - Supertecnoboff
当您执行insertObject:obj atIndex:0时,它将替换第0个索引的对象,@Saphrosit我说得对吗? - Vijay Sanghavi
1
@NatureofOrigin 不,如果位置被占用,现有的对象会被移动,就像Malloc在评论中所说的那样。 - Manlio

5
如其他答案所述,只需使用insertObject:atIndex方法即可。它是高效的,因为NSArrays不一定由连续的内存组成,即元素在插入时不总是移动,特别是对于包含数百个元素的大型数组。详见此博客。此外,请注意,在Objective-C中,仅指针在数组中移动,因此可以在内部使用memmove,而不像C++那样必须进行复制。

还请参考这个SE问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接