équivalent à push () ou pop () pour les tableaux?

J’essaie d’append, de supprimer et de référencer des éléments d’un tableau que je crée dans mon fichier java principal, mais j’ai du mal à déterminer la syntaxe correcte. Dans actionscript, ils ont push () et pop () pour append et supprimer des éléments dans un tableau, y a-t-il un équivalent dans Android?

En Java, un tableau a une taille fixe (après l’initialisation), ce qui signifie que vous ne pouvez pas append ou supprimer des éléments d’un tableau.

int[] i = new int[10]; 

L’extrait ci-dessus signifie que le tableau d’entiers a une longueur de 10. Il n’est pas possible d’append un onzième entier, sans réatsortingbuer la référence à un nouveau tableau, comme suit:

 int[] i = new int[11]; 

En Java, le package java.util contient toutes sortes de structures de données pouvant gérer l’ajout et la suppression d’éléments de collections de type tableau. La structure de données classique Stack a des méthodes pour pousser et diffuser.

Pour ceux qui n’ont pas le temps de refactoriser le code pour remplacer les tableaux avec Collection s (par exemple ArrayList ), il existe une alternative. Contrairement à Collection s, la longueur d’un tableau ne peut pas être modifiée, mais le tableau peut être remplacé, comme ceci:

 array = push(array, item); 

Les inconvénients sont que

  • le tableau entier doit être copié chaque fois que vous poussez, et
  • le tableau d’origine Object n’est pas modifié, vous devez donc mettre à jour la ou les variables selon vos besoins.

Voici la méthode push pour Ssortingng :
(Vous pouvez créer plusieurs méthodes push , une pour Ssortingng , une pour int , etc.)

 private static Ssortingng[] push(Ssortingng[] array, Ssortingng push) { Ssortingng[] longer = new Ssortingng[array.length + 1]; for (int i = 0; i < array.length; i++) longer[i] = array[i]; longer[array.length] = push; return longer; } 

Cette alternative est plus efficace, plus courte et plus difficile à lire:

 private static Ssortingng[] push(Ssortingng[] array, Ssortingng push) { Ssortingng[] longer = new Ssortingng[array.length + 1]; System.arraycopy(array, 0, longer, 0, array.length); longer[array.length] = push; return longer; } 

Vous pouvez utiliser LinkedList. Il a des méthodes, des sondages et des offres.

Vous pouvez utiliser Arrays.copyOf() avec un peu de reflection pour faire une belle fonction d’aide.

 public class ArrayHelper { public static  T[] push(T[] arr, T item) { T[] tmp = Arrays.copyOf(arr, arr.length + 1); tmp[tmp.length - 1] = item; return tmp; } public static  T[] pop(T[] arr) { T[] tmp = Arrays.copyOf(arr, arr.length - 1); return tmp; } } 

Usage:

 Ssortingng[] items = new Ssortingng[]{"a", "b", "c"}; items = ArrayHelper.push(items, "d"); items = ArrayHelper.push(items, "e"); items = ArrayHelper.pop(items); 

Résultats

Original: a, b, c

Tableau après appels push: a, b, c, d, e

Tableau après un appel pop: a, b, c, d