Les tableaux en Java ont une taille fixe, donc vous ne pouvez pas "ajouter quelque chose à la fin" comme vous pourriez le faire en PHP.
Le comportement est un peu similaire à celui de PHP :
int[] addElement(int[] org, int added) {
int[] result = Arrays.copyOf(org, org.length +1);
result[org.length] = added;
return result;
}
Ensuite, vous pourrez écrire :
x = new int[0];
x = addElement(x, 1);
x = addElement(x, 2);
System.out.println(Arrays.toString(x));
Mais ce schéma est terriblement inefficace pour les tableaux de grande taille. car il fait une copie de l'ensemble du tableau à chaque fois. (Et ce n'est en fait pas complètement équivalent à PHP, puisque votre ancien tableau reste le même).
Les tableaux PHP sont en fait assez semblables à un HashMap Java avec une "clé max" ajoutée, afin de savoir quelle clé utiliser ensuite, et un ordre d'itération étrange (et une relation d'équivalence étrange entre les clés Integer et certaines Strings). Mais pour des collections indexées simples, il vaut mieux utiliser une liste en Java, comme l'ont proposé les autres répondants.
Si vous voulez éviter d'utiliser List
En raison de la surcharge que représente l'encapsulation de chaque int dans un Integer, envisagez d'utiliser des réimplémentations de collections pour les types primitifs, qui utilisent des tableaux en interne, mais n'effectuent pas de copie à chaque modification, uniquement lorsque le tableau interne est plein (tout comme ArrayList). (Un exemple rapidement trouvé sur Google est cette classe IntList .)
La goyave contient les méthodes créant de tels wrappers sur Ints.asList
, Longs.asList
etc.
4 votes
Pour toutes les réponses ci-dessous utilise ArrayList mais OP demande spécifiquement pour Array. Je voudrais savoir aussi.
4 votes
La réponse est "non". Vous devez spécifier la taille du tableau (ou remplir tous les éléments) au moment de la déclaration/création en Java. Veuillez consulter java.sun.com/docs/books/jls/seconde_edition/html/arrays.doc.html
0 votes
J'ai remarqué que plusieurs fonctions Java renvoient des tableaux, alors j'ai regardé l'implémentation de list(filter) dans File.java. Elle utilise une liste en interne et la convertit en tableau à la fin. List<String> v = new ArrayList<>() ; ... return v.toArray(new String[v.size()]) ;