我试图根据某些条件动态地从 LinkedList 中删除对象,它删除了第一个对象,同时删除了第二个对象,它显示了超出范围的异常。 我试图从结束索引中删除对象。在这种情况下,它也失败了。 我将链接列表复制到临时链接列表,并尝试通过循环原始链接列表从 tempLinkedList 中删除。发生相同的异常。
(例外 ::指定的参数超出有效值的范围。 参数名称:索引(
listOfSmtObjects = new LinkedList<SMTObjects>[MAX_LEVEL]; //MAX_LEVEL = 5
LinkedList<SMTObjects>[] listOfSmtObjectsTemp = new LinkedList<SMTObjects>[MAX_LEVEL];
for (int j = 0; j < listOfSmtObjects.Count(); j++)
{
for (int k = 0; k < listOfSmtObjects[j].Count(); k++)
{
if (listOfSmtObjects[j].ElementAt(k) != null)
{
listOfSmtObjectsTemp[j] = new LinkedList<SMTObjects>();
listOfSmtObjectsTemp[j].AddLast(listOfSmtObjects[j].ElementAt(k));
}
}
}
int totalLevel = listOfSmtObjects.Count();
for (int index = 0; index <= totalLevel -1; index++)
{
LinkedList<SMTObjects> SMTobj = listOfSmtObjects[index];
LinkedList<SMTObjects> SMTobjTemp = listOfSmtObjectsTemp[index];
if (SMTobj != null)
{
for (int item = (SMTobj.Count()) - 1; item >= 0; item--)
{
if (SMTobj.ElementAt(item) != null /*&& SMTobjTemp.ElementAt(item) != null*/)
{
SMTObjects obj = SMTobj.ElementAt(item);
if(obj != null)
{
SMTObjects tempObj = SMTobjTemp.ElementAt(item);
SMTobjTemp.Remove(tempObj);
}
}
}
}
}
问题是在从原始列表分配到临时列表时,会创建新的链表。它应该与现有的链表一起附加。
for (int j = 0; j < listOfSmtObjects.Count(); j++)
{
for (int k = 0; k < listOfSmtObjects[j].Count(); k++)
{
if (listOfSmtObjects[j].ElementAt(k) != null)
{
if (listOfSmtObjectsTemp[j] == null)
{
listOfSmtObjectsTemp[j] = new LinkedList<SMTObjects>();
}
listOfSmtObjectsTemp[j].AddLast(listOfSmtObjects[j].ElementAt(k));
}
}
}