[Si vous voulez un peu de prêt-à-utiliser le code, veuillez défiler vers mon "Edit3" (après la coupe). Le reste est ici pour la postérité.]
Pour étoffer Éboueur de l'idée:
List<String> list = new ArrayList<String>(Arrays.asList(array));
list.removeAll(Arrays.asList("a"));
array = list.toArray(array);
Edit: je suis maintenant à l'aide d' Arrays.asList
au lieu de Collections.singleton
: singleton est limitée à une inscription, alors que l' asList
approche permet d'ajouter d'autres cordes à filtrer plus tard: Arrays.asList("a", "b", "c")
.
Edit2: L'approche ci-dessus conserve le même tableau (le tableau est toujours la même longueur); l'élément après la dernière est définie sur null. Si vous voulez un nouveau tableau de taille exactement comme nécessaire, utilisez ceci à la place:
array = list.toArray(new String[0]);
Edit3: Si vous utilisez ce code sur une base fréquente la même classe, vous pouvez envisager d'ajouter ceci à votre classe:
private static final String[] EMPTY_STRING_ARRAY = new String[0];
Ensuite, la fonction devient:
List<String> list = new ArrayList<String>(Arrays.asList(array));
list.removeAll(Arrays.asList("a"));
array = list.toArray(EMPTY_STRING_ARRAY);
Ce sera alors arrêtez de souiller votre tas inutile chaîne vide des tableaux qui seraient autrement new
ed à chaque fois que votre fonction est appelée.
cynicalman de la suggestion (voir les commentaires) sera également aider avec les tas de détritus, et de l'équité, je tiens à mentionner:
array = list.toArray(new String[list.size()]);
Je préfère mon approche, car il peut être plus facile d'obtenir la taille explicite de mal (par exemple, en appelant size()
sur la mauvaise liste).