我被要求修改前一段时间为Windows窗体应用程序编写的代码。程序员大量使用了ArrayList
。我认为通用列表比数组列表更有效,并计划使用List<T>
来重写代码。我想知道是否还有其他可能值得考虑的替代方案。我工作.net 2.0System.Collections.ArrayList有哪些替代方法?
回答
如果你在.NET 2中工作,那么你将不会有.NET 4中的任何并发集合可供你使用,这几乎只留下了List<T>
的“集合这有点像ArrayList
(即使在并发集合,没有立即等效的 - 当你实际预期的并发访问反正你应该只使用并发集合)。
有Stack<T>
和Queue<T>
,如以及LinkedList<T>
- 但所有这些都与ArrayList
有些不同,你可以用它们做什么。当然,如果你不需要随机存取的话,这些值得考虑。
我不会期望效率太多,除非您目前在ArrayList
中装箱了很多大型值类型。你可以可以预计是更清晰的代码。减少铸造次数,减少收集内容的不确定性等。
如果您可以在不久的将来随时升级到.NET 3.5,那么您就可以访问LINQ,这是非常棒的在处理集合时很有用。相对较少的新收集类型,但更简单的方式表达对它们的操作。
尝试SortedList和Collection。 通过双方的.NET Framework 2.0
'SortedList <,>'是一个键/值映射。 'Collection
更新支持:
对于添加到/从头/尾删除它是更好地使用LinkedList<T>
,但如果你能确定集合的精确最大的容量和规模将接近容量,那么最好使用Queue<T>
(因为内部是数组,在大小达到容量时重新分配)。通过队列,您不会得到LinkedList节点带来的内存开销。
原文: 从MSDN:The List<T> class is the generic equivalent of the ArrayList class.
请仔细阅读List<T>
Performance Considerations部分。 你应该使用什么取决于如何使用ArrayList?是随机访问还是从头部/尾部添加/删除?
它只是从头部/尾部添加/删除 –
查看更新。队列的大小是队列中元素的实际数量。容量是内部为队列元素分配的数组大小,即重新分配内部数组之前元素的最大数量。 – mixel
- 1. C++中有哪些替代方法?
- 2. RedirectToAction有哪些替代方法?
- 3. DataGridView有哪些替代方法?
- 4. Pervasive DataRush的替代方案有哪些
- 5. PersistentPerl或SpeedyCGI有哪些替代方案?
- 6. JMS有哪些替代方案?
- 7. PlayN有哪些替代方案?
- 8. 表达XML有哪些替代语法?
- 9. Java中的乘法有哪些替代方法?
- 10. .NET 3.5中的RegistryKey.OpenBaseKey有哪些替代方法?
- 11. 列表视图有哪些替代方法可供选择?
- 12. Solaris 11.3上的Docker有哪些替代方法?
- 13. CollabNet的python svn绑定有哪些替代方法?
- 14. NOT IN查询有哪些替代方法?
- 15. 递归搜索算法有哪些替代方案?
- 16. ASP.Net有哪些替代框架?
- 17. 为了提高MCMC算法的性能,if语句有哪些替代方法?
- 18. 已过时的Google Earth API存在哪些替代方法?
- 19. Yii积极形式有哪些替代方案?
- 20. AngularJS中e2e测试的量角器有哪些替代方案?
- 21. C/C++的多数据库库有哪些替代方案?
- 22. 工作流引擎有哪些替代方案?
- 23. 责任链设计模式有哪些替代方案?
- 24. Ruby版本管理器(rvm)有哪些替代方案?
- 25. Perl解释器线程有哪些替代方案?
- 26. 嵌套页面控件有哪些设计替代方案?
- 27. Zest在可视化图表中有哪些替代方案?
- 28. 在IF子句中OR'ing多个值选项有哪些替代方法?
- 29. 使用链接列表的调度程序有哪些替代方法?
- 30. 自动更新Java Swing应用程序有哪些替代方法?
arrayList是一个混合bag.you可以存储anything.a列表是强类型的,你只能存储单一类型的元素。什么类型的对象存储在你的旧列表 –