Wir haben die API des JavaScript-Arrays bereits früher eingeführt. Das Array selbst ist sehr leistungsfähig. Es kann jeden Typ speichern und seine Länge wird automatisch erweitert. Es bietet auch Durchlauf-, Filter- und andere Methoden zum Betreiben von Arrays.
Es übertrifft einfach das Java-Array (feste Länge, einzelner Typ). Die Sammlungsklasse in Java soll den Mangel an Arrays ausgleichen. Die meisten ihrer unteren Schichten verwenden Object []-Speicher, der nur eine dynamische Erweiterungsstrategie bietet. Natürlich ist der Reichtum der JDK-API für andere Sprachen schwierig übereinstimmen.
Aber das tut meiner Liebe zu Java und JavaScript keinen Abbruch.
Java ist wie eine Frau mittleren Alters. Beim Aufbau eines großen verteilten Systems kann man ihre aufrichtigen Lehren widerspiegeln
Und JavaScript ist wie ein aufkeimendes Mädchen. Jedes Mal, wenn es blüht, wird es Wellen in Ihrem Herzen hervorrufen. Es muss sorgfältig trainiert werden, bevor es von Ihnen verwendet werden kann.Okay, verzeihen Sie mir die unangemessene Metapher, lass uns darüber reden.
/** *@class ArrayList *@description *@time 2014-09-16 21:59 *@author StarZou **/ function ArrayList(arr) { this._elementData = arr || []; } var arrayListPrototype = { '_arrayPrototype': Array.prototype, '_getData': function () { return this._elementData; }, 'size': function () { return this._getData().length; }, 'isEmpty': function () { return this.size() === 0; }, 'contains': function (obj) { return this.indexOf(obj) > -1; }, 'indexOf': function (obj) { var i , data = this._getData(), length = data.length; for (i = 0; i < length; i++) { if (obj === data[i]) { return i; } } return -1; }, 'lastIndexOf': function (obj) { var i , data = this._getData(), length = data.length; for (i = length - 1; i > -1; i--) { if (obj === data[i]) { return i; } } return -1; }, 'get': function (index) { return this._getData()[index]; }, 'set': function (index, element) { this._getData()[index] = element; }, 'add': function (index, element) { if (element) { this.set(index, element); } else { return this._getData().push(index); } }, 'remove': function (index) { var oldValue = this._getData()[index]; this._getData()[index] = null; return oldValue; }, 'clear': function () { this._getData().length = 0; }, 'addAll': function (index, array) { if (array) { this._getData().splice(index, 0, array); } else { this._arrayPrototype.push.apply(this._getData(), index); } } }; ArrayList.prototype = arrayListPrototype;
// Test 代码 var arr = new ArrayList([3, 6, 5, 'xyz', 'foo', 'xyz']); console.log(arr.contains('xyz')); console.log(arr.indexOf('xyz')); console.log(arr.lastIndexOf('xyz')); console.log(arr.get(2)); arr.addAll([1, 2, 3]); console.log(arr);
Der obige Code implementiert einen Teil davon, und es gibt noch Optimierungsbereiche,
In Zukunft werde ich Zeit haben, JavaScript zu schreiben, um Klassen zu simulieren, die Baum-, Stapel-, Warteschlangen-, Karten- und andere Datenstrukturen implementieren.