我试图找到有效的方法来遍历两个列表并根据两个列表中元素之间的匹配返回第二个列表的索引。然后使用索引从另一个数组中查找数据,因此第二个列表基本上保存了数组的位置。
两个 List 都是 RowType 类型,其中
public class RowType
{
public int Type; //Acts as a group
public int SubType; //Specific classification of the type
}
我目前的方法是遍历第一个列表,然后对于每个元素,遍历第二个列表,比较 Type 或 Type\Subtype 组合以获得索引。这本质上是 O(n*m),它拖累了整体性能。
List1 可以包含 RowType 元素的组合,其中仅指定了 Type 或 Type 和 SubType 两者。
List2 包含同时具有Type 和 SubType的元素。
在下面的示例中,T1 和 T2 是两种类型,R1 到 R16 是 SubType。SubType 在 Type 中是唯一的。所以 R1 是 T1 的子类型,那么没有其他类型将 R1 作为子类型。
Input
List<RowType> list1 = new List<RowType>(){ T1, T2, RT3 }
List<RowType> list2 = new List<RowType>(){ RT1, RT3, RT6, RT7, RT9 }
where
RT1 -> Type = T1, SubType = R1
RT3 -> Type = T3, SubType = R3
RT6 -> Type = T1, SubType = R6
RT7 -> Type = T2, SubType = R7
RT9 -> Type = T4, SubType = R9
Expected Output
0, 1, 2, 3
Index 0 since T1 is Type for RT1
Index 2 since T1 is Type for RT6
Index 3 since T2 is Type for R7
Index 1 since RT3 matches RT3