求一个较好的解决方案
有一组数据称为“要提取的索引”,类似于{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(); // 剔除处理过的
}
}
}
------解决方案--------------------
学学《数据结构》,而不是只知道一点点名词儿概念。