Maison > Article > interface Web > Création d'un exemple de code ArrayList dans les conseils JavaScript_javascript
Nous avons présenté l'API de JavaScript Array plus tôt. En JavaScript, le tableau lui-même est très puissant. Il peut stocker n'importe quel type et sa longueur est automatiquement étendue. Il fournit également des méthodes de parcours, de filtrage et d'autres méthodes pour faire fonctionner les tableaux.
Il bat tout simplement le tableau de Java (longueur fixe, type unique). La classe de collection en Java est destinée à compenser le manque de tableaux. La plupart de ses couches inférieures utilisent le stockage Object [], qui ne fournit qu'une stratégie d'expansion dynamique. Bien sûr, la richesse de l'API du JDK est difficile à exploiter pour d'autres langages. correspondre.
Mais cela n'entrave pas mon amour pour Java et JavaScript.
Java est comme une femme d'âge moyen. Vous pouvez toujours voir son charme dans le JDK lors de la construction d'un grand système distribué, ses enseignements sincères peuvent être reflétés ;
Et JavaScript est comme une fille en herbe. Chaque fois qu'il fleurit, il suscitera des vagues dans votre cœur. Il doit être soigneusement entraîné avant de pouvoir être utilisé par vous.D’accord, pardonnez-moi la métaphore inappropriée, parlons-en.
/** *@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);
Le code ci-dessus en implémente une partie, et il reste encore des domaines d'optimisation,
À l'avenir, j'aurai le temps d'écrire du JavaScript pour simuler des classes qui implémentent Tree, Stack, Queue, Map et d'autres structures de données.