Stringとintがあります。たとえば、_String str = "12345";
_と_int num = 12345;
_です。 str.equals("" + num)
またはnum == Integer.parseInt(str)
が同じかどうかを確認する最も速い方法は何ですか(または、もっと速い方法はありますか?)。
これは Integer.parseInt および String.equals のソースコードです
num == Integer.parseInt(str)
はstr.equals("" + num)
よりも高速になります
str.equals("" + num)
は、最初にnumをO(n)の文字列に変換します。ここで、nは数字の桁数です。その後、再び文字列の連結を行いますO(n)そして最後に文字列比較を行います。この場合の文字列比較は、別のO(n)-nは数字の桁数です。したがって、すべてで〜3 * O(n)
num == Integer.parseInt(str)
は、文字列をO(n)である整数に変換します。ここで、nは数字の桁数です。整数比較はO(1)です。したがって、ちょうど1 * O(n)
両方をまとめるとO(n)-ですが、str.equals("" + num)
はより高い定数を持っているので遅くなります。
num == Integer.parseInt(str)
は比較を行うより良い方法だと思います。 str.equals("" + num)
は、整数値を比較する理想的な方法ではなく、また、ストリングプールに不要なストリング定数オブジェクトを作成するため(パフォーマンスを低下させます)。
これを使用して比較することもできると思います........
int p = 1234;
String Int = "1234";
String string = String.valueOf(p);
System.out.println(string + Int);
System.out.println(string.equals(Int));
code here