Проверьте элементы, посещенные в текстовом файле
У меня есть код, который читает элементы в текстовом файле. Он читает их построчно. Когда элемент прочитан, он будет добавлен в список, который не позволяет снова вернуться к нему. Когда список заполнен (максимальный размер), он будет очищен. Однако необходимо проверить элементы, добавленные в список, чтобы предотвратить повторное посещение этого конкретного элемента с заранее заданным значением, даже если список был очищен.
Пожалуйста, помогите мне разобраться, как это сделать в C# 2012.
namespace SearchTechniques.Algorithms
{
using System;
using System.Collections.Generic;
public abstract class TSBase : SearchTechniquesBase
{
// if Tabu list reaches the size (MaximumTabuListSize), it will be cleared.
private readonly int MaximumTabuListSize = 8;
public TSBase()
{
_tabuList = new List<object>();
}
protected override void RunAlgorithm(List<object> solutions)
{
_solutions = new List<object>();
_tabuList.Clear();
var solution = solutions[0];
solutions.RemoveAt(0);
while (solution != null)
{
_logger.Log("\t" + solution.ToString() + " - considering as next best solution not in tabu list based on cost function\n");
_solutions.Add(solution);
UpdateTabuList(solution);
solution = FindNextBestSolution(solution, solutions);
if (null != solution)
{
solutions.Remove(solution);
}
}
}
// updating tabu list
private void UpdateTabuList(object solution)
{
_tabuList.Add(solution);
if (_tabuList.Count >= MaximumTabuListSize)
{
_logger.Log("clearing tabu list as already reached: " + MaximumTabuListSize.ToString() + "\n");
_tabuList.Clear();
}
}
// finding the next best solution
protected abstract object FindNextBestSolution(object solution, List<object> solutions);
// the _solutions are both the list of current solutions and the tabu list in our case
protected abstract bool SolutionExistsInTabuList(object solution);
protected List<object> _tabuList;
}
}
Спасибо
1 ответ
Использовать List<string>
Метод.Contains() поможет определить, прочитали ли вы уже этот элемент. Если вы хотите проверить список даже после того, как очистите его, вам понадобится 2 списка.