Bonjour Sabrine,
Essaie le code suivant:
public static Object[] enleveDoublons(Object[] table) {
//Complexity = O(n²)
Object[] copy = new Object[table.length];
System.arraycopy(table, 0, copy, 0, table.length);
table = copy;
for (int i = 0; i < table.length; i++) {
for (int j = i + 1; j < table.length; j++) {
//Si table[j] n'est jamais null, simplifier la ligne suivante
if (table[j] != null && table[j].equals(table[i])) {
table[j] = table[table.length - 1];
table[table.length - 1] = null;
Object[] newTable = new Object[table.length - 1];
System.arraycopy(table, 0, newTable, 0, table.length - 1);
table = newTable;
j--;
}
}
}
return table;
}
Tu peux l'utiliser pour copier n'importe quel tableau d'objet, moyennant un cast avant :
Integer[] entree = new Integer[15];
Object[] sortie = enleveDoublons((Object[]) entree);
Ou peut-être plus simple :
Object[] entree = new Integer[15];
Object[] sortie = enleveDoublons(entree);
Par contre ça ne fonctionne pas avec les tableaux de types primitifs (j'utilise des Object[] pour que ce soit générique, et les types primitifs ne sont pas des instances de Object).
Cordialement,
rtfm and jfgi