>>95
重複チェックやるのにArrayListはやめれ。
効率が悪過ぎる。

てことで、HashSet使って書き直してみますた。
---
BufferedReader rd;
Set set = new HashSet();
StringBuffer sb = new StringBuffer();
String line;

while((line = rd.readLine()) != null){
  if(!set.add(line)){
    sb.append(line + "\n");
  }
}

String result = sb.toString();
---
「HashSetだと読み込んだ行の順序がわからなくなるからやだ」って人は
JDK 1.4.0から追加されたLinkedHashSetを使うとよろし。