使用优先级堆/比较器时输出不规则

发布于 2024-11-15 11:11:43 字数 905 浏览 3 评论 0原文

我正在尝试使用优先级队列,并尝试以相反的顺序排列数字[降序]。

我实现了一个比较器,并使用与自然顺序相反的约定,希望我能得到相反顺序的数字。

 public static void main(String[] args)
    { 
        PriorityQueue<Integer> Descending = new PriorityQueue<Integer>(10,stats.new    
        minComparator());

        Descending.add(5);
        Descending.add(2);
        Descending.add(7);

        while(Descending.size() > 0)
        {
               System.out.print(Descending.remove());

        }    

    }

class minComparator implements Comparator<Integer>
{

    @Override
    public int compare(Integer int1, Integer int2)
    {
        if(int1.intValue() < int1.intValue())
            return 1;
        else if(int1.intValue() > int1.intValue())
            return -1;
        else
            return 0;
    }

}

这是输出:

5 7 2

这既不是升序也不是降序!。有人可以帮我吗?

谢谢!

I am trying to use a priority Queue and was trying to get the numbers arranged in the reverse order [descending orders].

I implemented a comparator, and used the reverse convention as compared to natural order hoping that I would get numbers in reverse order.

 public static void main(String[] args)
    { 
        PriorityQueue<Integer> Descending = new PriorityQueue<Integer>(10,stats.new    
        minComparator());

        Descending.add(5);
        Descending.add(2);
        Descending.add(7);

        while(Descending.size() > 0)
        {
               System.out.print(Descending.remove());

        }    

    }

class minComparator implements Comparator<Integer>
{

    @Override
    public int compare(Integer int1, Integer int2)
    {
        if(int1.intValue() < int1.intValue())
            return 1;
        else if(int1.intValue() > int1.intValue())
            return -1;
        else
            return 0;
    }

}

Here is the output:

5 7 2

This is neither ascending nor descending !. Can someone please help me out.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寻找一个思念的角度 2024-11-22 11:11:43

我可以建议简化吗?

@Override
public int compare(Integer int1, Integer int2)
{
    return int2.compareTo( int1 );
}

May I suggest a simplification?

@Override
public int compare(Integer int1, Integer int2)
{
    return int2.compareTo( int1 );
}
妞丶爷亲个 2024-11-22 11:11:43

您将相同的数字 int1 与其本身进行比较,而不是 int1int2

int1.intValue() < int1.intValue()

You compare the same number int1 to itself instead of int1 and int2

int1.intValue() < int1.intValue()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文