两把钥匙比一把好

Ste*_* H. 2 .net c# algorithm data-structures

我有一个小部件类:

public class Widget
{
    ...
    public string UniqueID = "856D9PWW";
    public int Price = 325;
    public byte[] Data;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想要一个数据结构来存储我的小部件.这里有捕获 - 有时我需要根据它们的价格找到一组小部件,有时我需要根据它的ID找到一个特定的小部件.

我不想使用两个数据结构并在必要时使用它们,并且当我从第一个数据结构中删除它时将其从另一个数据结构中删除(这包括创建我自己的数据结构,在"封面"下执行此操作).我想数据结构,允许我使用多个键,只需要使用其中一个键从中删除一个项目,并具有在其中一个键下存储多个项目的功能.

Bri*_*sen 7

您可以创建自己的数据容器,以维护必要的数据结构,以允许使用两个键进行索引.如果您实现了一个标准容器接口,您甚至可以将此自定义容器用作任何其他框架容器(相同类型).

由于您可以控制"添加/删除"方法,因此可以根据需要轻松确保不同的结构是更新.您还可以确保两个键的查找尽可能快.容器使用多个结构来实现不同查找的事实是实现细节.

  • 对不起,我不确定我是否关注你.你没有免费获得性能.通过实现自己的数据容器,您可以确保两个键上的查找尽可能快.在优化代码时,您经常需要在优化空间或时间之间进行选择.如果我理解您的问题是正确的,那么您正在寻找快速查找. (3认同)