我有一個字符串和一個int,可以說:String str = "12345";
和int num = 12345;
。什麼是最快的方式看他們是否相同,str.equals("" + num)
或num == Integer.parseInt(str)
(或者有更快的方法?)?Java:比較整數和字符串 - 性能
這是Integer.parseInt和源代碼String.equals
我有一個字符串和一個int,可以說:String str = "12345";
和int num = 12345;
。什麼是最快的方式看他們是否相同,str.equals("" + num)
或num == Integer.parseInt(str)
(或者有更快的方法?)?Java:比較整數和字符串 - 性能
這是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
我的意思是說,整數值可以平等使用比較操作符「==」進行檢查。 –