Unterschied zwischen put (...) und append (...) für ein SparseArray?

9

Ich möchte nur wissen, was ist der Unterschied zwischen put(...) und append(...) für ein SparseArray?

Aus der offiziellen Dokumentation:

  • append(...) : Fügt ein Schlüssel / Wert-Paar in das Array ein und optimiert den Fall, in dem der Schlüssel größer ist als alle vorhandenen Schlüssel im Array.
  • put(...) : Fügt dem angegebenen Wert eine Zuordnung vom angegebenen Schlüssel hinzu und ersetzt die vorherige Zuordnung vom angegebenen Schlüssel, falls vorhanden.

Aber ich verstehe einfach nicht: s

Danke für Ihre Hilfe!

    
Skyost 10.05.2014, 12:58
quelle

2 Antworten

12

Es scheint mir, dass die Dokumentation ziemlich einfach ist:

Wenn Sie sequenzielle Schlüssel wie 1, 2, 3, 5, 7, 11, 13 ... hinzufügen, verwenden Sie append() .

Wenn Sie nichtsequenzielle Schlüssel wie 100, 23, 45, 277, 42 ... hinzufügen, verwenden Sie put() .

Es gibt keinen Grund, warum Sie in beiden Szenarien put() nicht verwenden können. Wenn Sie jedoch wissen, dass die Schlüssel sequenziell sind - zum Beispiel beim Laden von Daten aus dem Speicher -, wird Ihnen append() einen Leistungsvorteil verschaffen.

    
323go 10.05.2014, 13:04
quelle
5

Im Wesentlichen machen sie das Gleiche. Tatsächlich verwendet der Code zum Anhängen put :

%Vor%

Was ist der Unterschied? Wie Sie aus dem Quellcode sehen können, wenn der Schlüssel größer als alle vorhandenen Schlüssel im Array ist, erstellt der Code ein neues, größenoptimiertes Array, kopiert alle Schlüssel / Werte in das neue Array und fügt den neuen Schlüssel oben hinzu des Arrays.

Wann sollten Sie es verwenden? Wenn Ihre Schlüssel sequenziell sind, erhalten Sie einen Leistungsvorteil, da Sie sicher wissen, dass der nächste Schlüssel, den Sie verwenden werden, größer ist als die Schlüssel, die Sie zuvor verwendet haben (nun, das heißt, sequentiell bedeutet :-)) wissen Sie, dass Sie das Array erweitern müssen. Wenn Ihre Schlüssel nicht sequentiell sind, müssen Sie in diesem Fall die CPU-Leistung jedes Mal "ausgeben", wenn Sie einen neuen Schlüssel hinzufügen, um herauszufinden, ob der hinzuzufügende Schlüssel den Code zum Erweitern des Arrays benötigt. Ein großes Array mit vielen Schlüsseln / Werten und Schlüssel / Wert-Eingängen, das kann etwas leistungsschwach sein.

    
yoram givon 29.10.2015 14:07
quelle

Tags und Links