14 votes

Comment supprimer une valeur spécifique d'un tableau de chaînes en java ?

Duplicata possible :
Suppression d'un élément d'un tableau (Java)

Comment supprimer une valeur spécifique d'un tableau de chaînes, par exemple

String[] str_array = {"item1","item2","item3"};

Je veux supprimer "item2" de str_array. Aidez-moi s'il vous plaît, je veux un résultat tel que

String[] str_array = {"item1","item3"};

49voto

Vikdor Points 15049

Je procéderais de la manière suivante :

String[] str_array = {"item1","item2","item3"};
List<String> list = new ArrayList<String>(Arrays.asList(str_array));
list.remove("item2");
str_array = list.toArray(new String[0]);

11voto

Sumit Singh Points 8601

Vous pourriez utiliser le ArrayUtils API pour le supprimer.

array = ArrayUtils.removeElement(array, element);

7voto

Vulcan Points 14343

Si vous debe utiliser des tableaux, System.arraycopy est la solution la plus efficace et la plus évolutive. Cependant, si vous devez retirer un élément d'un tableau plusieurs fois, vous devez utiliser une implémentation de List plutôt qu'un tableau.

Ce qui suit utilise System.arraycopy afin d'obtenir l'effet désiré.

public static Object[] remove(Object[] array, Object element) {
    if (array.length > 0) {
        int index = -1;
        for (int i = 0; i < array.length; i++) {
            if (array[i].equals(element)) {
                index = i;
                break;
            }
        }
        if (index >= 0) {
            Object[] copy = (Object[]) Array.newInstance(array.getClass()
                    .getComponentType(), array.length - 1);
            if (copy.length > 0) {
                System.arraycopy(array, 0, copy, 0, index);
                System.arraycopy(array, index + 1, copy, index, copy.length - index);
            }
            return copy;
        }
    }
    return array;
}

De plus, vous pouvez augmenter l'efficacité de la méthode si vous savez que votre tableau est composé uniquement de Comparable objets. Vous pouvez utiliser Arrays.sort pour les trier avant de les faire passer dans le remove modifiée pour utiliser la méthode Arrays.binarySearch pour trouver l'indice plutôt qu'une boucle for, ce qui fait passer l'efficacité de cette partie de la méthode de O(n) à O(nlogn).

4voto

R H Points 147

L'autre option est de copier le tableau dans un autre tableau et d'accepter de supprimer l'élément.

 public static String[] removeItemFromArray(String[] input, String item) {
    if (input == null) {
        return null;
    } else if (input.length <= 0) {
        return input;
    } else {
        String[] output = new String[input.length - 1];
        int count = 0;
        for (String i : input) {
            if (!i.equals(item)) {
                output[count++] = i;
            }
        }
        return output;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X