gpt4 book ai didi

java - 在 Java 中实现 Comparable

转载 作者:行者123 更新时间:2023-11-29 05:25:31 25 4
gpt4 key购买 nike

我正在尝试编写一个处理位置的类,例如 00501 Holtsville NY 40.922326 -72.637078, 00544 Holtsville NY 40.922326 -72.637078

除了 Comparable 部分之外,我已经能够解决所有问题。我正在尝试修改提供的方法,以便它会根据地点的城市名称返回比较结果。

public class PostalCodes implements Comparable {
private String city;
private double latitude;
private double longitude;
private String zip;
private String state;

public PostalCodes(String aZip, String aCity, String aState, double aLatitude, double aLongitude)
{
city = aCity;
latitude = aLatitude;
longitude = aLongitude;
zip = aZip;
state = aState;
}

void setZip(String aZip)
{
zip=aZip;
}

void setState(String aState)
{
state=aState;
}


void setLocation(String aCity)
{
city = aCity.trim();
}
void setLatitude(double lat)
{
latitude = lat;
}
void setLongitude(double long1)
{
longitude = long1;
}
public String getState()
{
return state;
}
public String getZip()
{
return zip;
}
public String getLocation()
{
return city;
}
public double getLatitude()
{
return latitude;
}
public double getLongitude()
{
return longitude;
}
public String toString()
{
String result = String.format("%s %s,%s (%1.3f; %1.3f)",zip, city, state, latitude,longitude);
return result;
}

@Override
public int compareTo(Object arg0) {
// Confused
return 0;
}


}

会不会是这样的

public int compareTo (Object arg0){
if (arg0>city)
return True;

非常感谢任何帮助。请保持简单,这是我第一次尝试实现 Comparable。

编辑:

当我尝试对 main 中的数组进行排序时,如下所示....

公共(public)课 Hmwk {

public static void main(String[] args) throws IOException {
URL url = new URL("http://noynaert.net/zipcodes.txt");
Scanner input=new Scanner (url.openStream());
int counter =0;
final int MAX_SIZE=50000;
PostalCodes[] codesArray= new PostalCodes[50000];
while (input.hasNextLine() && counter < MAX_SIZE)
{
String line=input.nextLine();
String[] tokens;
tokens = line.split("\t");
if (tokens.length != 5)
{
continue;
}
String zip=tokens[0];
String city=tokens[1];
String state=tokens[2];
double lat=Double.parseDouble(tokens[3]);
double longy=Double.parseDouble(tokens[4]);
PostalCodes code=new PostalCodes(zip,city,state,lat,longy);
codesArray[counter]= code;
counter++;

}
Arrays.sort(codesArray);
for (int i =0;i<counter; i+=1000)
{
System.out.println(codesArray[i].toString());
}

}

}我得到错误

Exception in thread "main" java.lang.NullPointerException
at PostalCodes.compareTo(PostalCodes.java:69)
at PostalCodes.compareTo(PostalCodes.java:1)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at Hmwk.main(Hmwk.java:37)

上帝的绿色地球到底发生了什么?

最佳答案

首先,您应该确实键入您的Comparable。这样,您无需强制转换即可访问要比较的对象。

public class PostalCodes implements Comparable<PostalCodes>

然后,当你实现compareTo时,你只需要在city字段上做。

public int compareTo(PostalCodes other) {
return city.compareTo(other.getLocation());
}

您可能需要检查对象 other 或两个实例中的 city 上的 null

您可能还想比较其他字段,但从您向我们展示的内容来看,两个 PostalCodes 是根据它们的 city 字段进行比较的。以上就是实现的方法。

如果您有更多字段需要比较,您可以添加它们。

(让 city 的 getter 更传统也会更好。)

关于java - 在 Java 中实现 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800917/

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