Sono un principiante. Questa potrebbe essere una domanda stupida.Perché "big = big.add (..)" deve essere usato per sommare BigIntegers?
Ho una serie di numeri veramente grandi. Devo trovare la somma di tutti quei numeri nell'array. Ho definito un BigInteger e inizializzato a zero. Ora attraverserò la matrice e aggiungerò ogni elemento a questo BigInteger.
BigInteger big = BigInteger.ZERO;
for(BigInteger b : array){
big.add(b);
}
Nessun errore di compilazione, ma big
valore era ancora pari a zero, il codice non ha funzionato. Così, ho controllato e ho imparato che il metodo di aggiunta di BigInteger restituisce la somma. Ho modificato sopra il codice.
big = big.add(b);
Ora questo ha funzionato bene.
La mia domanda: Che cosa sta realmente accadendo lì? Perché il primo codice non ha aggiornato il valore big
.
Posso paragonare questa BigInteger.add()
con collection.add()
un quadro più chiaro è apprezzato. Grazie.
Può per favore elaborare una concessione di prestazioni? Grazie. – Charan
@Charan La creazione di una nuova raccolta contenente quasi esattamente gli stessi riferimenti di una esistente potrebbe essere costosa se la raccolta è ampia. Le raccolte mutabili consentono di ottenere una versione leggermente modificata di una raccolta senza fare quel lavoro. –
@Charan Aggiungere un elemento a un ArrayList di un milione di elementi potrebbe essere semplice come un'assegnazione di riferimento e un incremento del contatore. Per copiare e aggiungere, devi copiare tutti i riferimenti, tutti milioni solo per aggiungerne uno. BTW CopyOnWriteArrayList esegue questa operazione ed è molto lento per la modifica di una raccolta di grandi dimensioni. –