Stavo cercando di unire gli elementi di un array tramite il metodo StringUtils.join(array, separator)
dalla libreria di Apache. Qualcuno può spiegarmi perché non riesco a ottenere la stringa risultante e solo un puntatore alla sua posizione se utilizzo una matrice di tipi primitivi come int[]
? Si prega di vedere l'esempio codice qui sotto:java - StringUtils.join() puntatore di ritorno
public static void main(String[] args){
String[] s = new String[]{"Anna","has", "apples"};
System.out.println(StringUtilities.join(s, " "));
int[] a = new int[]{1,2,3};
System.out.println(StringUtilities.join(a, " "));
Integer[] b = new Integer[]{1,2,3};
System.out.println(StringUtilities.join(b, " "));
}
Solo utilizzando Integer
array funziona. Ho capito che gli array di primitivi sono trattati internamente diversamente da ArrayList o altri oggetti di ordine superiore, ma allora perché è possibile (lo stesso argomento più o meno, ma una domanda diversa forse) per creare un'istanza di HashMap<String, int[]>
senza avvisi, eccezioni? Gli array sono internamente avvolti in un altro oggetto? Solo per le mappe? Da quanto ho letto dal doc non puoi parametrizzare una mappa, un set, una lista di array ecc con tipi primitivi, che capisco, ma poi ... Trovo un po 'di confusione. Qualsiasi spiegazione ragionevole sarebbe apprezzata. Grazie.
Hai assolutamente ragione. – Kayaman
È lo stesso effetto se utilizzo StringUtils.join (intArray). Non ho bisogno di mettere alcun separatore, era solo per scopi di esempio. Passando una matrice di int (primitive) e chiamando qualsiasi delle firme del metodo (cioè, con o senza separatore, il separatore come char o string produce lo stesso effetto). Prova: 'int [] a = new int [] {1,2,3}; \t \t \t \t System.out.println (StringUtilities.join (a, '')); \t \t System.out.println (StringUtilities.join (a)); \t \t System.out.println (StringUtilities.join (a, "")); ' – Marius
La chiamata' join (a) 'corrisponde anche alla firma varargs, in modo da ottenere la rappresentazione stringa _object_ di intArray, che risulta essere la output spiegato da @Kayaman. Se si desidera concatenare un array int con un carattere separatore, sarà necessario utilizzare l'argomento char corretto. Viene così chiamato il metodo corretto (quello che crea le stringhe dalle singole voci dell'array int). –