存储相同列表两次的内存使用情况,按不同标准排序

本文关键字:情况 用情 排序 标准 内存 列表 两次 存储 | 更新日期: 2023-09-27 18:28:47

这是一个理论上的例子,但希望它能突出我的问题:

假设我有一个Item对象的主列表,而Item有两个属性,比如WeightValue

该程序将非常频繁地被要求按Weight排序并获得最轻的Item,而在其他地方则按Value排序并获得最高的Item

主列表有可能非常大,所以一遍又一遍地对主列表进行排序将是许多不必要的工作。为了节省时间,是否可以将排序结果存储为自己的列表?这些其他列表是否只存储指向真实对象的指针,而不只是再次存储它们?

存储相同列表两次的内存使用情况,按不同标准排序

这取决于Itemstruct还是class。如果它是class(这将是合理的默认值),则这两个列表都只包含对对象的引用-不会重复所有Weight/Value值。如果它是struct,那么所有的值都将被复制,因为每个值都有一个单独的支持向量,而实际的结构将在向量中。旁注:如果值是字符串,请注意字符串也是引用类型,因此字符串内容不会重复(除非它们是单独创建的,没有任何伪intering等)。

这些其他列表是否只存储对真实对象的

指针引用,而不只是再次存储它们?

只要Item是一个类而不是一个结构:是的。

正如我们在这里所读到的,类是引用类型,这意味着它们不会被复制到新的列表中

您确实可以保留两个列表,并将它们按price排序,另一个按Weight排序,从而使您的

生活更轻松