请写一个程序找出附件中文件重复的行
输出:
输出一个文本文件,给出哪些行是重复的,第一次出现的行号,格式如下
行号 此行的文本内容
并给出此程序的运行时间
以下是代码,可是有些知识点不是太熟悉,看的头很大没看明白代码是怎么实现要求的。
请明白的帮我给每行代码加上注释,谢谢!
static void Main(string[] args)
{
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //TimeSpan 我只知道是根据输入日期计算两个指定日期之间的时间间隔的意思,实际没用过。DateTime.Now是现在的时间,而DateTime.Now.Ticks是干吗的?网上查到的意思是“表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。一个以0.1纳秒为单位的时间戳。”半懂不懂的...所以这第一句代码就没明白是怎么会事。
StreamReader sr = new StreamReader(@"D:\文本.txt", System.Text.Encoding.Default); //StreamReader是什么什么读取流吧,这句的意思就是读取指定路径的文本文档吧?
String strline="";
int number=1
StringBuilder sb=new StringBuilder(); Hashtable myHT=new Hashtable ();//定义哈希表,具体意义是? while((strline=sr.ReadLine())!=null)//判断文本是不是空的?
{
if (myHT.ContainsKey(strline))//myHT.ContainsKey()这个方法是做什么的?
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//往StringBuilder里加东西吧?
}
else
{
myHT.Add(strline, number);//一行一行往哈希表里加?哈希表是用来放文档的?
}
number++;
}
//看到这基本就昏了,到不是全看不懂,只是放一起就昏了。后面的代码也尽量加上注释,谢谢了!
sr.Close();
StreamWriter wr = new StreamWriter(@"D:\1.txt");
wr.Write(sb+"");
wr.Close(); TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //?
string spanTotalSeconds = ts2.Subtract(ts1).Duration().TotalSeconds.ToString(); //?
Console.WriteLine(spanTotalSeconds);
Console.ReadKey();
}
输出:
输出一个文本文件,给出哪些行是重复的,第一次出现的行号,格式如下
行号 此行的文本内容
并给出此程序的运行时间
以下是代码,可是有些知识点不是太熟悉,看的头很大没看明白代码是怎么实现要求的。
请明白的帮我给每行代码加上注释,谢谢!
static void Main(string[] args)
{
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //TimeSpan 我只知道是根据输入日期计算两个指定日期之间的时间间隔的意思,实际没用过。DateTime.Now是现在的时间,而DateTime.Now.Ticks是干吗的?网上查到的意思是“表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。一个以0.1纳秒为单位的时间戳。”半懂不懂的...所以这第一句代码就没明白是怎么会事。
StreamReader sr = new StreamReader(@"D:\文本.txt", System.Text.Encoding.Default); //StreamReader是什么什么读取流吧,这句的意思就是读取指定路径的文本文档吧?
String strline="";
int number=1
StringBuilder sb=new StringBuilder(); Hashtable myHT=new Hashtable ();//定义哈希表,具体意义是? while((strline=sr.ReadLine())!=null)//判断文本是不是空的?
{
if (myHT.ContainsKey(strline))//myHT.ContainsKey()这个方法是做什么的?
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//往StringBuilder里加东西吧?
}
else
{
myHT.Add(strline, number);//一行一行往哈希表里加?哈希表是用来放文档的?
}
number++;
}
//看到这基本就昏了,到不是全看不懂,只是放一起就昏了。后面的代码也尽量加上注释,谢谢了!
sr.Close();
StreamWriter wr = new StreamWriter(@"D:\1.txt");
wr.Write(sb+"");
wr.Close(); TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //?
string spanTotalSeconds = ts2.Subtract(ts1).Duration().TotalSeconds.ToString(); //?
Console.WriteLine(spanTotalSeconds);
Console.ReadKey();
}
if (myHT.ContainsKey(strline))//判断当前这一行内容是不是已经存到哈希表了
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//如果这一行内容已经添加过,则重复,把重复的内容放到sb中
}
else
{
myHT.Add(strline, number);//存入行的内容以及它的行号
}
number++;
}
Hashtable: <字符串,初次出现的行号>
StringBuilder:输出结果遍历文件,按行读出。
如果hashtable中包含该行,说明该行曾经出现过,因此输出初次出现的行号以及该行内容
否则,该行内容为首次出现,保存<该行内容,行号>到Hashtable
String strline="";
int number=1
StringBuilder sb=new StringBuilder(); Hashtable myHT=new Hashtable ();//定义哈希表,判断重复行 while((strline=sr.ReadLine())!=null)//判断文本是否为空
{
if (myHT.ContainsKey(strline))//myHT.ContainsKey()判断数据在hashtable是否存在
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//添加数据到StringBuilder
}
else
{
myHT.Add(strline, number);//哈希表不存在添加到哈希表
}
number++;//行号
}
sr.Close();//结束
string spanTotalSeconds = ts2.Subtract(ts1).Duration().TotalSeconds.ToString(); //?
Console.WriteLine(spanTotalSeconds);
Console.ReadKey();
这部分代码的作用是不是计算整个程序的运行时间啊?