当前位置: 首页 > 知识库问答 >
问题:

Collections.sort在重写compare和compareTo后不起作用

邵君植
2023-03-14
 package points;

 import java.util.Comparator;

 public class CompareY implements Comparator<Point>
 {
    public int compare(Point p1, Point p2)
    {
         int equals = 0;

    if(p1.getY() > p2.getY())
    {
        equals = 1;
    }
    else if(p1.getY()< p2.getY())
    {
        equals = -1;
    }
    else if(p1.getY() == p2.getY())
    {
        //If the 'Y's' are equal, then check the 'X's'
        if(p1.getX() > p2.getX())
        {
            equals = 1;
        }
        if(p1.getX() < p2.getX())
        {
            equals = -1;
        }
    }
    return equals;
  }
}
package points;

public class Point implements Comparable<Point>
{
    int x;
    int y;

public Point()
{
    //Blank default constructor
}
public Point(int x, int y)
{
    this.x = x;
    this.y = y;
}


//Auto generated getters and setters
public int getX() {
    return x;
}
public void setX(int x) {
    this.x = x;
}
public int getY() {
    return y;
}
public void setY(int y) {
    this.y = y;
}

public int compareTo(Point o)
{
    int equals = 0;

    if(this.getX() > o.getX())
    {
        equals = 1;
    }
    else if(this.getX() < o.getX())
    {
        equals = -1;
    }
    else if(this.getX() == o.getX())
    {
        //If the 'X's' are equal, then check the 'Y's'
        if(this.getY()> o.getY())
        {
            equals = 1;
        }
        if(this.getY() < o.getY())
        {
            equals = -1;
        }
    }
    return equals;
  }

}
Collections.sort((List<Point>) linkedList);

测试代码:

package points;
import java.util.*;
import java.awt.Point;
public class Test
{

public static void main(String[] args) 
{
    Random rand = new Random();
    int sizeLimit = 10;

    LinkedList<Point> linkedList = new LinkedList<Point>();

    //Populating our linkedList with random values.
    for(int i=0; i < sizeLimit; i++)
    {
        linkedList.add(new Point(rand.nextInt(10), rand.nextInt(10)));
    }

    System.out.println("original list");

    //Declaring our iterator to step through and print out our elements
    Iterator<Point> iter = linkedList.iterator();
    while(iter.hasNext())
    {
        System.out.println(iter.next());
    }

    Collections.sort((List<Point>) linkedList);     

    }
}

共有1个答案

施俊明
2023-03-14

导入java.awt.Point;

您导入了错误的Point类。代码现在不用你的了。

如果删除该行,将从当前包中获得point类。

 类似资料:
  • 我知道compare and返回一个值。 例如: 方法调用或方法。但是,当compare或返回值时,方法如何排列。在或返回要排序的int值后运行的后台场景是什么?方法如何使用从和返回的int值(或或)

  • 问题内容: Java 和方法之间有什么区别?这些方法是否给出相同的答案? 问题答案: 从JavaNotes: - a.compareTo(b): 可比较接口:比较值并返回一个整数,该整数告诉值比较的是小于,等于还是大于。 如果你的类对象具有自然顺序,请实现接口并定义此方法。所有具有自然排序实现的Java类-示例:,包装类, compare(a, b): 比较器接口: 比较两个对象的值。这被实现为的

  • 当实现Comparable接口并重写compareTo方法时, 第三行,我意识到当我重写它时,我可以使用compareTo,它会自动按照自然顺序进行比较。但是在可比较的界面中,它不是一个抽象的方法。没有定义它,它还可以比较吗?还有,为什么我不需要使用super关键字来区分这个比较。

  • 所以我想给我的按钮添加一些样式。因此,我创建了一个从QPushButton派生的类。我已经重写了mousePressEvent和mouseReleaseEvent函数。到目前为止还好。一切都按预期工作,按钮在按下和释放时会改变颜色。当我在MainWindow中尝试实现on_button_clicked()时,问题就出现了。就是行不通。

  • 我对symfony框架知之甚少。我复制了一个网站www.example。net访问www.example。com站点使用url 它不会重定向。 谢谢