请问C#中,我有72246452条数据的TXT,我应该要如何去除重复值,并显示有哪些重复呢?
我用一般的方法会显示内存错误讯息,怕误入歧途,因此想先问好的方法,谢谢
這是我最後的寫法,正常讀取7000萬筆數據,3分鐘以內可以跑完,沒有回報任何錯誤。
List List陣列 = new List ();
int 要跑讀取的第1行 = 0;
int 要跑到讀取的最大值 = 72246500;
var lines = File.ReadLines(@"自動化瀏覽器BUG檢視.txt", System.Text.Encoding.UTF8).Skip(要跑讀取的第1行).Take(要跑到讀取的最大值);
//var lines = File.ReadLines(@"TEST.txt", System.Text.Encoding.UTF8).Skip(要跑讀取的第1行).Take(要跑到讀取的最大值);
var iter = lines.GetEnumerator();
while (iter.MoveNext())
{
List陣列.Add(iter.Current);
}
Console.WriteLine(List陣列.ToList().Count());
HashSet hs = new HashSet(List陣列);
//hs.ToList().ForEach(item => Console.WriteLine(item));
Console.WriteLine(hs.ToList().Count());
另外也需要把開發平台改成x64位元才不會有內存溢出
这个功能Excel、有,你可以百度看看excel这个功能。
你这个数据是怎么样的,可以用List<?> 去做。把txt数据放进list,然后用linq 语句去过滤。至于linq怎么实现,可以自行百度,有很多答案
要是我说,用x64的方式编译你的程序,找一个有64GB或者128GB内存的计算机
用 File.ReadAllLines("1.txt").Distinct() 一行搞定。
一次读一部分数据,比如100条,然后每条数据插入你数组时候进行一下重复性排查,类似map这种容器,就可以了。
根本用不着一次性把文件内容全部读取到程序里面。
你可以看看
https://www.cnblogs.com/lonelyxmas/p/3378884.html
linux中一般去重用uniq方法,而运行之前先运行sort排序,我会在sort之前把相邻的相同先去掉,所以 cat 1.txt | uniq | sort | uniq > 2.txt 就解决问题。