2013-04-13 19 views

Antwort

13

num == Integer.parseInt(str) wird sich schneller als str.equals("" + num)

str.equals("" + num) wird zuerst num bespannen wandeln, die O (n), wobei n die Anzahl der Stellen in der Zahl ist. Dann wird es wieder eine Stringverkettung O (n) machen und dann endlich den Stringvergleich durchführen. Der String-Vergleich ist in diesem Fall ein anderes O (n) - n ist die Anzahl der Ziffern in der Zahl. Also in allen ~ 3 * O (n)

num == Integer.parseInt(str) wird die Zeichenkette zu Integer konvertieren, die wieder O (n) ist, wobei n die Anzahl der Ziffern in der Zahl ist. Und dann ist der ganzzahlige Vergleich O (1). Also nur ~ 1 * O (n)

Zusammenzufassen sind beide O (n) - aber str.equals("" + num) hat eine höhere Konstante und ist somit langsamer.

5

Ich denke num == Integer.parseInt(str) ist ein besserer Weg Vergleich zu tun. Weil str.equals("" + num) dies nicht der ideale Weg ist, wie man Integer-Werte vergleichen sollte und auch unnötige String-Konstanten-Objekte im String-Pool erzeugt (was die Performance behindert).

+0

ich für die Gleichstellung mit Vergleichsoperator ‚==‘ überprüft werden, die ganzzahlige Werte sagen bedeuten, um zu verwenden. –

1

Raten Sie auch in der Lage sein, könnte dies zu vergleichen ........

int p = 1234; 
String Int = "1234"; 
String string = String.valueOf(p); 
System.out.println(string + Int); 
System.out.println(string.equals(Int)); 
code here 
Verwandte Themen