日期:2014-05-17  浏览次数:20750 次

求一个较好的解决方案
有一组数据称为“要提取的索引”,类似于{1,12,45,77,100,28888}这样的由小到大的但是没有增长规律的值,规模在上千个,我准备用数组进行存储,这里以6个举例

有另外一组数据称为“待处理”,因为访问函数的限制(有且只有类似readline()的函数,并且没有读取指定页的函数readline(n)),只能逐行读取,规模在30000到100000之间。

因此,只能用
for(int i = 0; i < 待处理.Count; i++)
{
     calss temp=待处理.readline();
}
进行读取

现在,希望结合“要提取的索引”中的值,将位于索引值中的数据储存起来,没有在索引中的数据,不进行处理。

我的伪代码是:
从1开始进行循环

         calss temp=待处理.readline();
         如果循环次数出现在要提取的索引中,就对保存在temp中的数据进行处理


说白了就是,有100000个值,我知道我要哪些,但是这100000个值能且只能挨个读取,因此我希望在读取到我想要的地方时,调用处理函数。

我的问题是,有什么好的办法,在挨个读取这100000个值的时候,核对正在读取的值的count是不是在我想要的count列表里?

求解!

------解决方案--------------------
这样会不会更好理解一些:

Queue<int> todoList = new Queue<int>(new int[]{1,12,45,77,100,28888});
using (StreamReader reader = new StreamReader("c:\\yourfile.txt"))
{
    for (int lineNumber = 0; todoList.Count > 0; lineNumber++)
    {
        string line = reader.ReadLine();
        if (lineNumber == todoList.Peek())
        {
            var temp = line;    // 进行处理...
            todoList.Dequeue(); // 剔除处理过的
        }
    }
}

------解决方案--------------------
引用:
Quote: 引用:

存储到哈希表中。
版主您好!能在稍微详细点吗,我在百度百科查阅了哈希表的概念,没有发现什么特别有价值的帮助


学学《数据结构》,而不是只知道一点点名词儿概念。