这个程序该怎么写呢?
请写一个程序找出附件中文件重复的行
输出:
   输出一个文本文件,给出哪些行是重复的,第一次出现的行号,格式如下
   行号	此行的文本内容
   并给出此程序的运行时间
用JAVA写
------解决方案--------------------
问题的关键不是读取行,而是比较。
如果比读一行的,就和前面所有行比较的话,那么越到后来就越慢,而且这样的操作并不必要。
我们可以用一个简单的查找来做,前提也是读取行,并且去行的头一个字母作为Key值,
class MyLineString{
private String ls;
private int lnum;
public MyLineString(String ls, int lnum){
 this.ls = ls;
 this.lnum = lnum;
}
public String getLs(){
 return ls;
}
public int getLnum(){
 return lnum;
}
public boolean equals(Object obj){
 if(obj == null || !(obj instanceof MyLineString)){
   return false;
 }
 MyLineString lstr = (MyLineString)obj;
 return ls.equals(lstr.getLs());
}
public int hashCode(){
 return ls.hashCode();
}
public String toString(){
 return "重复行行号:" + lnum + ",内容:" + ls;
}
}
MyLineString mls = null;
需要定义一个行号计数器
index++;
HashMap<String, List<MyLineString>> map = new HashMap<String, List<MyLineString>>();
String lineStr = br.readLine();
String key = null;
if(lineStr.length > 0){
 key = lineStr.substring(0,1);
 if(map.containKey(key)){
   List<MyLineString> list = map.get(key);
   mls = new MyLineString(lineStr,index);
   if(!list.contain(mls)){
     list.add(mls);
   } else {
     System.out.println(list.get(list.indexOf(mls)));
   }
 } else {
   mls = new MyLineString(lineStr,index);
   List<MyLineString> list = new LinkedList<MyLineString>();
   map.put(key, list);
 }
}
就像上面的实现