Ngrams列表中位置之间的距离

本文关键字:距离 之间 位置 列表 Ngrams | 更新日期: 2023-09-27 17:58:27

我需要在一个列表中的一个元素与另一列表中的相同元素的位置之间保持距离。

我试过这种

 public void out_of_place(List<NgramItem> Test, List<NgramItem> Train)
   {
       List<int> result = new List<int>();
       int indexTest = -1;
       int indexTrain = -1;
           foreach (NgramItem item in Test) {         
           indexTest = Test.IndexOf(item);
           indexTrain = Train.IndexOf(item);                 
           }
           Console.WriteLine(" Index: {0}   {1}", indexTest, indexTrain);
    }

公共类NgramItem:IComparable{私有字符串ngram;私有int频率;//。。。}

但我无法获得列表Train上项目的索引。有什么建议吗?

感谢

Ngrams列表中位置之间的距离

您没有给出所用集合类型或NgramItem的任何详细信息。然而,执行Train.IndexOf(item)很可能会对引用类型使用默认的Equals,即ReferenceEquals。除非实例在两个集合中共享,否则IndexOf将始终返回-1,因为Test的实例未存储在Train中。

一种解决方案是在NgramItem上实现Equals,以确定NgramItem的两个实例是否表示相同的值。请记住,如果您覆盖Equals,您也必须覆盖GetHashCode