2013-04-13 20 views

risposta

13

num == Integer.parseInt(str) sta andando più veloce di str.equals("" + num)

str.equals("" + num) sarà prima convertire num a stringa che è O (n), dove n è il numero di cifre nel numero. Quindi eseguirà nuovamente una concatenazione di stringhe (n) e infine eseguirà il confronto tra stringhe. Il confronto delle stringhe in questo caso sarà un altro O (n) - n che è il numero di cifre nel numero. Quindi in tutto ~ 3 * O (n)

num == Integer.parseInt(str) convertirà la stringa in numero intero che è O (n) di nuovo dove n è il numero di cifre nel numero. E poi il confronto tra interi è O (1). Quindi solo ~ 1 * O (n)

Per riassumere entrambi sono O (n) - ma str.equals("" + num) ha una costante più alta e quindi è più lenta.

5

Credo num == Integer.parseInt(str) è un modo migliore di fare il confronto. Perché str.equals("" + num) questo non è il modo ideale per confrontare i valori interi e inoltre creerà oggetti costanti stringa non necessari nel lotto di stringhe (che ostacola le prestazioni).

+0

voglio dire che i valori interi possono essere controllati per l'uguaglianza utilizzando l'operatore di confronto '=='. –

1

Immagino che si potrebbe anche essere in grado di utilizzare questo per confrontare ........

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