Bug Comparator with PriorityBlockingQueue ?

Bug Comparator with PriorityBlockingQueue ? - Java - Programmation

Marsh Posté le 07-10-2008 à 19:06:51    

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 :
 
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 :  
 
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" );
    }
}

Merci par avance pour votre aide,
 
Eva
 

Reply

Marsh Posté le 07-10-2008 à 19:06:51   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed