J'ai 3 tableaux génériques qui ont tous une taille prédéterminée de 25. Par exemple, si ses 5 seules valeurs réelles dans le tableau, il affichera ces 5, les 20 suivantes comme nulles. Je ne veux pas afficher de valeurs nulles. Dois-je modifier quelque chose dans le toString? Mon toString est
public String toString(){ return Arrays.toString(container); }
Container étant un objet tableau créé à partir d'une fonction constructeur. Voici à quoi ressemble ma sortie.
4 Réponses :
En supposant que vous utilisez java8 ou version ultérieure:
Arrays.toString(Arrays.stream(container).filter(i->i!=null).collect(Collectors.toList()));
Dans ce qui suit, je suppose que votre conteneur est quelque chose comme Something [] container
.
Pré-java 8 utilisant StringBuilder
:
public String toString(){ return Arrays.stream(container) .filter(Objects::nonNull) .map(Object::toString) .collect(Collectors.joining(",")); }
Post-java 8 utilisant des flux:
public String toString(){ StringBuilder s = new StringBuilder(); for (Something i : container) if (i!=null) s.append(i.toString()+","); return s.toString(); }
Merci, j'essaierai vos solutions lorsque j'arriverai plus tard à mon ordinateur portable.
Une autre solution avec le flux java8:
MyType[] array = Arrays.stream(originalArray) .filter(Objects::nonNull) .toArray(MyType[]::new); System.out.println(Arrays.toString(array));
Les méthodes Arrays.toString ()
produisent toutes une représentation du tableau entier . Si ce n'est pas ce que vous voulez, vous devez choisir une approche différente. Par exemple, vous pouvez faire quelque chose comme ceci:
String result = Arrays.stream(container) .filter(Objects::nonNull) .map(Objects::toString) .collect(Collectors.joining(",", "[", "]"));
Je ne vois pas vraiment la partie hacky à ce sujet. Du moins pas comparé aux autres réponses.
Veuillez importer le résultat dans votre message, n'utilisez pas de lien externe.
Je ne comprends pas comment prendre et télécharger une photo de votre écran semble être plus facile que de copier / coller cette ligne de texte dans la question.
stackoverflow.com/questions/26353491 /… ?
On ne sait pas ce qu'est un «tableau générique». Voulez-vous dire un tableau dont le type d'élément est donné par une variable de type? Ou peut-être simplement un
Object []
explicite?Cela me semble être un mauvais modèle de données. Utilisez
ArrayList
au lieu de array ou gardez un pointeur en haut sur le premier emplacement vide pour que vous sachiez quelle partie du tableau imprimer. Ensuite, il existe un certain nombre d'options pour l'impression.