Je suis très nouveau dans Java, et j'aimerais vos entrées.
Donc, j'ai un tableau:
for (int i = 0; i < names.length; i++) {
allNames[i] = names[i];
}
for (int i = 0; i < newNames.length; i++}
allNames[i + names.length] = newNames[i];
}
Et je les combine à travers:
String[] names = {"Anna", "Jo"};
String[] newNames = {"Bob", "Sue", "Jane"};
int totalLength = names.length + newNames.length;
String[] allNames = new String[totalLength];
Ma question est de savoir comment définir le tableau allNames dans le tableau des noms d'origine? Comme, les noms seraient «Anna», «Jo», «Bob», «Sue», «Jane». Je sais qu'il existe des méthodes qui peuvent faire cela, mais comment le feriez-vous manuellement?
5 Réponses :
allNames aux noms : [Anna, Jo, Bob, Sue, Jane]
clone : names = Arrays.stream(allNames).toArray(String[]::new);
System.out.println(Arrays.toString(names));
names = new String[allNames.length];
System.arraycopy(allNames, 0, names, 0, allNames.length);
System.out.println(Arrays.toString(names));
names = Arrays.copyOf(allNames, allNames.length);
System.out.println(Arrays.toString(names));
names = allNames.clone();
System.out.println(Arrays.toString(names));
Toutes les variantes feront le travail:
names = allNames;
System.out.println(Arrays.toString(names));
Cependant, en utilisant la première manière, vous pointerez simplement la référence de names à allNames . Toutes les autres variantes - un nouveau tableau sera créé et rempli avec les valeurs allNames . Le dernier comportement est généralement préférable.
La première option et préférée est:
name = newName;
La deuxième pourrait être ce que vous faites, ajoutez simplement:
name = (String[])ArrayUtils.addAll(names, newNames);
après pour les boucles .
En général, les tableaux ont une taille fixe. Lorsque vous redimensionnez un tableau, vous copiez toutes les données dans un nouveau. Il n'y a donc aucun moyen de le faire lorsque vous ne les initiez pas avec une taille plus grande. Les méthodes des autres réponses feront probablement ce que vous voulez, mais elles ne développent pas votre tableau d'origine.
Il existe la classe Arrays qui fournit des fonctions telles que la copie. Les programmeurs Java rechercheront généralement le javadoc sur le Web, ou peut-être dans l'EDI.
La réponse serait:
List<String> names = new ArrayList<>();
Collections.addAll(names, "Anna", "Jo");
List<String> newNames = Arrays.asList("Bob", "Sue", "Jane");
List<String> allNames = new ArrayList(names);
allNames.addAll(newNames);
Mais travailler ainsi est assez inefficace, échanger un tableau entier valeurs.
Dans ce cas, comme dans java les tableaux sont de taille fixe, on utiliserait une liste ou un ensemble dynamique (pour les éléments uniques):
names = allNames;
p >
, en Java, sont des objets. Ainsi, définir simplement names = allNames les fait pointer vers le même objet (pas des copies identiques séparées). En d'autres termes, si vous deviez changer "Sue" en "Suzy" dans l'un, cela le changerait dans l'autre. C'est la manière la plus simple et la plus efficace de le faire, en supposant que vous n'ayez pas besoin de les utiliser séparément.
Veuillez ajouter une balise Java à cette question
@jjj Désolé, j'ai maintenant ajouté la balise java
Voulez-vous dire
names = allNames;?@ vincrichaud Oh, c'est aussi simple que ça? Wow, j'ai peut-être oublié que OTL