2013-05-25 6 views
-1

У меня есть код, который читает элементы в текстовом файле. Он читает их по очереди. Когда элемент читается, он будет добавлен в список, который не позволит ему снова вернуться. Когда список будет заполнен (максимальный размер), он будет очищен. Однако необходимо проверить элементы, добавленные в список, чтобы предотвратить повторное посещение этого конкретного элемента для предопределенного значения, даже если список был удален.Проверка элементов, просмотренных в текстовом файле

Пожалуйста, помогите мне понять, как это сделать в 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; 
} 
} 

Благодарности

+0

попробуйте google .. ключевое слово streamreader .. list add .. – matzone

+0

thank u ... Я использовал список, но мне нужен счетчик, чтобы проверить, сколько предметов, например. Депозит (1) .Открыть (2) .Открыть (3) .Открыть (1) .Отложить (4), я хочу предотвратить посещение Депозита (1) до Депозита (4) –

+0

добавить код на вопрос .. надеюсь, что я может помочь вам (на самом деле я на VB, но я постараюсь ..) – matzone

ответ

0

Используйте List<string> метод .Contains() поможет определить, если вы прочитали этот пункт уже. Если вы хотите, чтобы список проверял даже после его очистки, вам понадобятся 2 списка.

+0

thank u ... Я использовал но мне потребуется счетчик, чтобы проверить, сколько элементов, например Депозит (1) .Открыть (2) .Отложить (3) .Открыть (1). Отложить (4), я хочу предотвратить посещение Депозита (1) до Депозита (4) –