Add pour treeset
Résolu
hasnaa-1
Messages postés
11
Statut
Membre
-
hasnaa-1 Messages postés 11 Statut Membre -
hasnaa-1 Messages postés 11 Statut Membre -
Bonjour a tous
lorsqu'on utilise add pour un treeset et on a deux éléments qui sont considérés égaux alors qu il est l élément qui va être supprime est ce que ca sera l ancien au bien le nouveau élément ajoute
merci d'avance pour vos réponses
lorsqu'on utilise add pour un treeset et on a deux éléments qui sont considérés égaux alors qu il est l élément qui va être supprime est ce que ca sera l ancien au bien le nouveau élément ajoute
merci d'avance pour vos réponses
A voir également:
- Add pour treeset
- 2007 microsoft office add-in microsoft save as pdf or xps - Télécharger - Bureautique
- Touche add clavier - Guide
- Missing config file "default_mp_controls.cfg" during initiliazation. may need to add to code_pre_gfx. - Forum Jeux PC
- Bootable add in cards ✓ - Forum Windows
- Add remove pro - Télécharger - Nettoyage
1 réponse
Question intéressante, la réponse est dans la documentation :
https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#add(E)
"Adds the specified element to this set if it is not already present. More formally, adds the specified element e to this set if the set contains no element e2 such that (e==null ? e2==null : e.equals(e2)). If this set already contains the element, the call leaves the set unchanged and returns false."
https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#add(E)
"Adds the specified element to this set if it is not already present. More formally, adds the specified element e to this set if the set contains no element e2 such that (e==null ? e2==null : e.equals(e2)). If this set already contains the element, the call leaves the set unchanged and returns false."
par exemple est ce que je ne peux pas dans la méthode compareTo,
dans le cas ou les 2 éléments sont considérés égaux,de garder le dernier élément ajoute ?
Exemple :
import java.util.Comparator; import java.util.TreeSet; public class TreeSetMultiple<E extends Comparable<E>> extends TreeSet<E> { private static final long serialVersionUID = 1; public TreeSetMultiple() { super(new Comparator<E>() { @Override public int compare(E e1, E e2) { int n = e1.compareTo(e2); if (n==0) return 1; else return n; } }); } } public class Test { public static void main(String[] args) { TreeSetMultiple<Integer> tree = new TreeSetMultiple<Integer>(); tree.add(1); tree.add(2); tree.add(3); tree.add(4); tree.add(2); tree.add(3); System.out.println(tree); // [1, 2, 2, 3, 3, 4] } }mais je veux qu il remplace la derniere valeur ajouter par l ancienne
import java.util.TreeSet; public class TreeSetMultiple<E> extends TreeSet<E> { private static final long serialVersionUID = 1; @Override public boolean add(E e) { this.remove(e); return super.add(e); } }Le plus dur en fait c'est l'exemple, pour être sûr que c'est bien le nouveau qui est ajouté :
public class Test<E extends Comparable<E>> implements Comparable<Test<E>> { private static int n=0; private int id = ++n; private E e; public Test(E e) { this.e = e; } public String toString() { return String.format("{id=%d, %s}",id,e.toString()); } @Override public int compareTo(Test<E> t) { return e.compareTo(t.e); } public static void main(String[] args) { TreeSetMultiple<Test<Integer>> tree = new TreeSetMultiple<Test<Integer>>(); tree.add(new Test<Integer>(1)); System.out.println(tree); // [{id=1, 1}] tree.add(new Test<Integer>(2)); System.out.println(tree); // [{id=1, 1}, {id=2, 2}] tree.add(new Test<Integer>(1)); System.out.println(tree); // [{id=3, 1}, {id=2, 2}] tree.add(new Test<Integer>(3)); System.out.println(tree); // [{id=3, 1}, {id=2, 2}, {id=4, 3}] tree.add(new Test<Integer>(2)); System.out.println(tree); // [{id=3, 1}, {id=5, 2}, {id=4, 3}] tree.add(new Test<Integer>(4)); System.out.println(tree); // [{id=3, 1}, {id=5, 2}, {id=4, 3}, {id=6, 4}] } }