gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:06:52 25 4
gpt4 key购买 nike

我遇到的问题是使用 Collections.sort(linkedList);尝试对充满点的链接列表进行排序。我已经修改了compare 和compareTo 方法来满足需要。正如此处发布的,此片段用于比较列表中的 Y 值,以便我们可以对它们进行排序。

 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);

我收到错误“集合类型中的方法 sort(List) 不适用于参数 (List<Point>

如果我执行了我的方法,我不明白它从哪里来,也不明白为什么它在那里。

测试代码:

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);

}
}

最佳答案

import java.awt.Point;

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

如果删除该行,您将从当前包中获取 Point 类。

或者你也可以这样做

import points.Point;

关于java - Collections.sort 在重写compare 和compareTo 后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com