Cet article décrit la méthode de mise en œuvre de Java pour combiner deux tableaux en un. Partagez-le pour votre référence, comme suit:
En Java, comment fusionner deux cordes [] en une?
Cela semble être une question très simple. Cependant, comment rédiger le code efficacement et concise vaut toujours la peine de réfléchir. Voici quatre méthodes, veuillez vous référer à la sélection.
1. COMMONS APACHE
C'est le moyen le plus simple. Dans Apache-Commons, il existe une méthode ArrayUtils.addAll(Object[], Object[]) qui nous permet de le faire en une seule ligne:
String[] both = (String[]) ArrayUtils.addAll(first, second);
Les autres doivent appeler les méthodes fournies dans JDK par vous-même et les envelopper.
Pour plus de commodité, je définirai une concat de méthode d'outils qui peut combiner deux tableaux ensemble:
static String[] concat(String[] first, String[] second) {}
À des fins générales, j'utiliserai des génériques pour définir dans la mesure du possible afin que non seulement la chaîne [] puisse être utilisée, mais d'autres types de tableaux peuvent également être utilisés:
static <T> T[] concat(T[] first, T[] second) {}
Bien sûr, si votre JDK ne prend pas en charge les génériques ou ne peut pas l'utiliser, vous pouvez changer manuellement T en chaîne.
2. System.ArrayCopy ()
Statique statique [] Concat (String [] A, String [] b) {String [] C = new String [A.Length + B.Length]; System.ArrayCopy (A, 0, C, 0, A.Length); System.ArrayCopy (B, 0, C, A.Length, B.Length); retour c;}Utiliser comme suit:
String [] à la fois = concat (premier, deuxième);
3. Arrays.Copyof ()
Dans Java6, il y a une méthode Arrays.copyOf() , qui est une fonction générique. Nous pouvons l'utiliser pour écrire une méthode de fusion plus générale:
public static <t> t [] concat (t [] d'abord, t [] second) {t [] result = arrays.copyof (premier, first.length + second.length); System.ArrayCopy (Second, 0, Result, First.Length, Second.Length); Retour Résultat;}Si vous souhaitez fusionner plusieurs, vous pouvez écrire ceci:
public static <t> t [] concatall (t [] d'abord, t [] ... rest) {int totalngth = first.length; pour (t [] array: rest) {totalngle + = array.length; } T [] result = arrays.copyof (d'abord, totalngle); int offset = first.length; pour (t [] array: rest) {System.ArrayCopy (array, 0, result, offset, array.length); offset + = array.length; } Retour Résultat;}Utiliser comme suit:
String [] à la fois = concat (premier, deuxième); String [] More = Concat (premier, deuxième, troisième, quatrième);
4. Array.Newinstance
Vous pouvez également utiliser Array.newInstance pour générer un tableau:
STATIQUE privé <T> t [] Concat (t [] a, t [] b) {final int alen = a.Length; Final int mélange = B.Length; if (alen == 0) {return b; } if (Blen == 0) {return a; } final t [] résultat = (t []) java.lang.reflect.array. newInstance (a.getClass (). getComponentType (), alen + mélange); System.ArrayCopy (A, 0, Result, 0, Alen); System.ArrayCopy (b, 0, résultat, Alen, mélange); Retour Résultat;}Pour plus d'informations sur le contenu lié à Java, veuillez consulter les sujets de ce site: "Résumé des compétences en fonctionnement de Java Array", "Résumé des caractères Java et des compétences de l'opération de cordes", "Résumé des compétences en fonctionnement mathématique Java", "Tutorial sur les structures de données et les algorithmes de Java"
J'espère que cet article sera utile à la programmation Java de tous.