日期:2014-05-18  浏览次数:20776 次

hashtable限定数量输出问题
一个有10000多行,分行读取并存入hashtable中,想让hashtable有1000条时输出,最后不足1000条的也输出到一个文本中
C# code
Hashtable ht = new Hashtable( 1000 );
         string line;
           using (StreamReader sr = new StreamReader(inFilePath, Encoding.Default))
           {
               while (sr.Peek() >= 0)
               {
                   line = sr.ReadLine();
                   ht.Add(line,null);
               }
           }
            StreamWriter sw = new StreamWriter(outpath, false, Encoding.Default);
           .....


问题是初始化hashtable的大小后,所有的内容还是都加进了ht中
菜鸟请教。。。

------解决方案--------------------
用 List 就可以了。

HashTable的初始大小和限制容量没有一点关系,你属于用错误的方法解决错误的问题。

List<string> list = new List<string>();
using (StreamReader sr = new StreamReader(inFilePath, Encoding.Default))
{
while (sr.Peek() >= 0)
{
line = sr.ReadLine();
list.Add(line);
if (list.Count() > 1000)
{
StreamWriter sw = new StreamWriter(outpath, false, Encoding.Default);
...
}
}
}

------解决方案--------------------
探讨
楼上:用List不能清除重复数据,要不然人家也不用hashtable了。
楼主:Hashtable( 1000 )并不能限定hashtable的最终长度,所以在添加数据处还得自己判断。

------解决方案--------------------
探讨
问题是初始化hashtable的大小后,所有的内容还是都加进了ht中

------解决方案--------------------
探讨
引用:

用 List 就可以了。

HashTable的初始大小和限制容量没有一点关系,你属于用错误的方法解决错误的问题。

List<string> list = new List<string>();
using (StreamReader sr = new StreamReader(inFilePath, Encoding.Default))
……