を使用してJavaでプログラムを作成し、Scanner
各行からスペースで区切られた2つの要素を取得して、にストックされたオブジェクトに配置しましたArrayList
。それは完全に機能しますが、10000行の入力になると非常に長くなります。いくつかのトピックや Web サイト (この など) を読みましたが、これよりBufferedReader
もはるかに効率的であることScanner
がわかりましたが、試してみても改善は見られませんでした。
これまでに入力の各行を解析するために使用した行は次のとおりです。
String charsetName = "UTF-8";
Scanner scanner = new Scanner(new BufferedInputStream(System.in), charsetName);
次に、呼び出している行数の間にループが実行されています。
String[] mid = scanner.nextLine().split(" ");
だから私は次のように置き換えようとしましScanner
た:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] base = reader.readLine().split(" ");
何も変更されませんでした (どちらの場合も 12000 行で 8 秒)
プログラムの動作を大幅に高速化するために、正しい方向に進んでいますか? それとも、ループを使用して各行を通過することから問題が発生していますか?