ファイル内の重複行削除(後優先)
Posted feedbacks - Java
LinkedHashSetを使用しました。後の行を優先するために先に読んだ行を消去しています(入力は標準入力から与えます)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.io.*;
import java.util.*;
public class Sample {
public static void main(String[] args) throws IOException {
BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
LinkedHashSet<String> uniqLines = new LinkedHashSet<String>();
String str;
while ((str = r.readLine()) != null) {
if (uniqLines.contains(str)) {
uniqLines.remove(str);
}
uniqLines.add(str);
}
for (String s : uniqLines) {
System.out.println(s);
}
}
}
|


raynstard
#3422()
Rating1/1=1.00
入力されたテキストデータから重複する行をとりのぞいて、その結果を標準出力へ出力するプログラムを作成してください。
重複行の排除については、以下の仕様を満たしてください。
#4.はおまけですがある/なしで作りが変わってくると思われるので追加しました。
この問題はraynstardさんにご投稿いただきました。ご協力ありがとうございます。 ところで、素朴な実装のしかたをするとメモリ容量の数倍のサイズのすべての行が異なっているファイルを読ませたときに大変なことが起こりそうな気がしますが、そういうシビアなお題設定ではないので素朴に解いてしまって構いません。シビアなのは続編にしたいと思います。
[ reply ]