gpt4 book ai didi

java - 没有以正确的方式使用Comparable接口(interface)

转载 作者:行者123 更新时间:2023-11-30 01:56:36 25 4
gpt4 key购买 nike

一直在寻找这个问题的答案,但似乎我的问题比其他问题更具体。

所以我有两个类和一个接口(interface)。该接口(interface)称为“Comparable”,我知道该接口(interface)确实有自己的方法,但我们稍后会介绍它。

我拥有的是名为“cityMain”、“City2”的类和接口(interface)“Comparable”

我的程序现在正在做的是从 txt 文件中读取类似以下内容的内容:

75242;乌普萨拉90325;于默奥96133;博登23642;霍尔维肯35243;韦克舍51000;延雪平72211;韦斯特罗斯等等

分号消失,整数和字符串一分为二。这些数字是邮政编码,旁边的数字只是瑞典某些州的名称。从“mainCity”读取它后,我实际上正在对其进行排序,以便带有其名称的顶部 zipper 位于顶部,因此从最小的数字到最大的数字。

然后,当它开始读取它时,它会转到“City2”类,然后从那里开始,它会依次执行每种方法、一个邮政编码和一个州。

但是:Atm 我实际上是从我的主设备而不是从我的界面调用所有内容。

它应该像这样“mainCity”-->“Comparable”-->“City2”。该程序按原样运行,但我希望它是正确的!

我尝试从“可比较”开始,然后这样调用它,但它不起作用,也没有给我一个错误。再次注意:Comparable 确实有自己的方法,但我没有使用它,因为我不知道如何应用它,因为它现在看起来。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;


public class cityMain {

private static BufferedReader r;

public static void main(String[] args) {
int Z = 0;
String C = null;
try {
ArrayList<City2> City = new ArrayList<City2>();

FileReader file = new FileReader("C:\\Users\\me\\Desktop\\BB.dat");
r = new BufferedReader(file);
String currLine;
while ((currLine = r.readLine()) != null) {

if (currLine.trim().length() > 0) {
String[] split = currLine.split(";");
Z = (Integer.parseInt(split[0]));
C = (split[1]);
City.add(new City2(Z, C));
}
}
Collections.sort(City, (c1, c2) -> c1.getZipCode() - c2.getZipCode());

for (int i = 0; i < City.size(); i++) {
System.out.println(City.get(i).getZipCode() + " " + City.get(i).getCityName());

}

} catch (IOException e) {
System.out.println("Erorr : " + e);
}

}

}


HERE IS A DIFFERENT CLASS:

public class City2 implements Comparable {

private int zipCode;
private String cityName;

public City2(int zipCode, String cityName) {
this.zipCode = zipCode;
this.cityName = cityName;
}

public int getZipCode() {
return zipCode;
}

public String getCityName() {
return cityName;
}

public void addAndPrint() {

}

}

HERE IS THE INTERFACE:

public interface Comparable {

public int getZipCode();

public String getCityName();

public void addAndPrint();

}

我应该得到什么,我已经得到了,但不是以我应该得到的方式得到的!

23642 霍尔维肯35243 韦克舍51000 延雪平72211 韦斯特罗斯75242 乌普萨拉90325 于默奥96133 博登

现在任何事情都会非常感激!

最佳答案

如果您明确要求使用Comparable界面然后更改您的City2类:

public class City2 implements Comparable<City2> {

private int zipCode;
private String cityName;

public City2(int zipCode, String cityName) {
this.zipCode = zipCode;
this.cityName = cityName;
}

public int getZipCode() {
return zipCode;
}

public String getCityName() {
return cityName;
}

public void addAndPrint() {

}

@Override
public int compareTo(City2 city) {
return this.getZipCode() - city.getZipCode();
}

}

观察:

  1. 在这里,我们正在实现 Comparable<City2>而不是原始的类型Comparable
  2. 覆盖compareTo()根据需要比较邮政编码。
  3. 您无需显式创建接口(interface) Comparable ,而只是实现 java 提供的一个。

关于java - 没有以正确的方式使用Comparable接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276646/

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