Bug Comparator with PriorityBlockingQueue ?
Bonjour,
Je voudrais créer une Queue dont les éléments sont ordonnés par rapport à leur priorité. J'ai créé un comparateur d'entiers tout simple mais celui-ci n'ordonne pas correctement ma liste.
Avec le comparateur et le code test ci-dessous j'obtiens pour résultat 1, 0, 1 au lieu de 1, 1, 0.
Est-ce qu'il existe un bug connu pour l'utilisation de la classe Comparator ou bien est-ce que j'ai mal codé ? (sans l'utilisation de ma classe Comparator l'ordonnancement est bon ...)
Voici mon Comparateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| public class NewComp implements Comparator<Integer> {
/**
* default constructor
*/
public NewComp() {
}
/**
* Compare the priority level of two Integer
* elements in argument.
*
* @return <pre>
* 1 if this priority level is lower
* -1 if this priority level is higher
* 0 if the priority levels are equals
* </pre> {@inheritDoc}
*/
public int compare(Integer app1, Integer app2) {
if (app1.intValue() > app2.intValue())
{
return -1;
}
else if (app1.intValue() < app2.intValue())
{
return 1;
}
else
{
return 0;
}
}
public boolean equals(Integer app1, Integer app2) {
boolean result = false;
if (app1.intValue() == app2.intValue()) {
result = true;
}
return result;
}
} |
Voici ma classe test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class TestComparator extends PriorityBlockingQueue<Integer>{
public TestComparator(int capa, Comparator<Integer> comp)
{
//super();
super(capa, comp);
}
/**
* default constructor
*/
public static void main (String[] args) {
TestComparator test = new TestComparator(1, new NewComp());
test.offer(new Integer(0));
test.offer(new Integer(1));
test.offer(new Integer(1));
System.out.println("end");
//Empty
}
} |
Merci par avance pour votre aide,
Eva