2013-04-13 14 views
12

私はStringとintを持っています。String str = "12345";int num = 12345;と言います。彼らが同じであるかどうかを知る最も速い方法は、str.equals("" + num)またはnum == Integer.parseInt(str)(または、より速い方法がありますか?)Java:intとStringsの比較 - パフォーマンス

これは私がnum == Integer.parseInt(str)の比較を行うための良い方法だと思いInteger.parseIntString.equals

答えて

13

num == Integer.parseInt(str)が速くstr.equals("" + num)

str.equals("" + num)よりしようとすると、最初のn個の桁数である場合(N)Oである文字列にNUMを変換します。次に、文字列連結を再度実行し、最後に文字列比較を行います。この場合の文字列の比較は、数値の桁数である別のO(n) - nになります。だからすべて〜3 * O(n)

num == Integer.parseInt(str)は、文字列をO(n)の整数に変換します。ここで、nは数値の桁数です。そして、整数比較はO(1)です。したがって、〜1 * O(n)

まとめて、O(n) - ですが、str.equals("" + num)はより高い定数を持ち、ゆっくりです。

5

のソースコードです。 str.equals("" + num)これは整数値を比較する方法と、Stringプール内に不要なString定数オブジェクトを作成する(パフォーマンスを阻害する)理想的な方法ではないためです。

+0

........あなたはまた、比較するためにこれを使用することができるかもしれないと思います。 –

1

は、私はその整数値を比較演算子「==」を使用して一致するかどうかは確認することができます言うことを意味し

int p = 1234; 
String Int = "1234"; 
String string = String.valueOf(p); 
System.out.println(string + Int); 
System.out.println(string.equals(Int)); 
code here 
関連する問題