Java: сравнение ints и строк - производительность
У меня есть String и int, скажем: String str = "12345";
и int num = 12345;
. Каков самый быстрый способ увидеть, являются ли они одинаковыми, str.equals("" + num)
или num == Integer.parseInt(str)
(или есть более быстрый способ?)?
Это исходный код Integer.parseInt и String.equals
Ответы
Ответ 1
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)
имеет более высокую константу и, следовательно, медленнее.
Ответ 2
Я думаю, что num == Integer.parseInt(str)
- лучший способ сравнения. Потому что str.equals("" + num)
это не идеальный способ сравнения целых значений, а также создание ненужных объектов String const в пуле строк (что затрудняет производительность).
Ответ 3
Угадайте, что вы также сможете использовать это для сравнения........
int p = 1234;
String Int = "1234";
String string = String.valueOf(p);
System.out.println(string + Int);
System.out.println(string.equals(Int));
code here