私はtxtファイルを持っており、配列のすべての要素(文字列、スペース)を配列に配置する必要があります。各行の要素をJavaの配列に配置する
例:
1行 "ヘイ、1日\ n" は最初の行のための
2 ///など
出力:[ "H" "E" "Y"」、 "" "" 1 "" d "" a "" y "]
これはどの方法で最適ですか?分割と文字列を使用するか、char型で操作していますか?
私はtxtファイルを持っており、配列のすべての要素(文字列、スペース)を配列に配置する必要があります。各行の要素をJavaの配列に配置する
例:
1行 "ヘイ、1日\ n" は最初の行のための
2 ///など
出力:[ "H" "E" "Y"」、 "" "" 1 "" d "" a "" y "]
これはどの方法で最適ですか?分割と文字列を使用するか、char型で操作していますか?
文字列にString#toCharArray
を呼び出すだけではどうですか?
とにかくnextLine
を使用すると、読者は改行を切り捨てます。
のような何か:
try(BufferedReader r = new BufferedReader(new FileReader("topSecretDocs.txt"))) {
for(String line = r.readLine(); line != null; line = r.readLine()) {
char[] chars = line.toCharArray();
System.out.println("Split line to " + Arrays.toString(chars));
}
} catch(IOException e) {
dealWithException();
}
編集:特に、非常に大きな文字列に対して、文字列をコピーする必要があるので、あなたが、代わりにString#charAt
を使用して文字列をループしたいことがあり注意。
編集2:非常に悪いベンチマークです。
static long time(Runnable r) {
long start = System.nanoTime();
r.run();
return System.nanoTime() - start;
}
static int cs = 0;
public static void main(String[] args) {
char[] bigString = new char[100000];
Arrays.fill(bigString, 0, bigString.length/4, 'A');
Arrays.fill(bigString, bigString.length/4, bigString.length/2, 'B');
Arrays.fill(bigString, bigString.length/2, bigString.length * 3/4, 'C');
Arrays.fill(bigString, bigString.length * 3/4, bigString.length, 'D');
String s = new String(bigString);
float avgCopy = 0, avgLoop = 0;
final int times = 100000;
for(int i = 0; i < times; i++) {
avgLoop += time(() -> {
cs = 0;
for(int j = 0; j < s.length(); j++)
cs += s.charAt(j) == 'C' ? 1 : 0;
});
} avgLoop /= times;
for(int i = 0; i < times; i++) {
avgCopy += time(() -> {
char[] chars = s.toCharArray();
cs = 0;
for(char c : chars)
cs += c == 'C' ? 1 : 0;
});
} avgCopy /= times;
System.out.println("copy: " + avgCopy + " ns");
System.out.println("loop: " + avgLoop + " ns");
System.out.println("There were (obviously) " + cs + " Cs in that string.");
}
は私が取得:
copy: 70984.336 ns
loop: 40534.63 ns
ので、約半分の速さ。あなたがそれを大きな違いと呼ぶかどうかに関わらず、私はあなたに任せます。
ありがとう、私はそれを試してみよう! – belab
あなたは 'string.toCharArray'を使用できません。 – Moira
あなたは、行全体を文字列に入れて、この方法を使用することを意味しますか? – belab
ファイルの読み込みに問題はありますか?または文字列の文字を取得するか? – Tunaki