如何显示两个对象彼此相邻?

时间:2013-04-20 21:35:01

标签: java

我必须在一个文件中读到一个字母(City)与另一个字母相邻。它们由标签分隔。

如何显示Q与X相邻,R与X相邻(也),P与R相邻等等??

Q   X
R   X
P   R
P   W
W   S
S   T
T   W
W   Y
Y   R
Y   Z

要在文件中读取的代码段:

private ArrayList<City> cityList;
private ArrayList<City> cityFromList;
private ArrayList<City> cityToList;
Scanner theFlightFile = null;

    try {
        theFlightFile = new Scanner (new File("flightFile.txt"));
    }
    catch (Exception FileNotFoundException) {
        System.out.println(FileNotFoundException.getMessage());
    }
    while (theFlightFile.hasNext()) {
        String cityFrom = theFlightFile.next();
        String cityTo = theFlightFile.next();
        City cityA = new City(cityFrom);
        City cityB = new City(cityTo);

        cityToList.add(cityA);
        cityFromList.add(cityB);
        //testing input reading...
        System.out.println(cityFrom + " -----> " + cityTo);
    }

方法显示与'aCity'相邻的所有城市的名称。 @param aCity需要邻接列表的城市。

    //this is completely wrong, I know...
public void displayAdjacentCities(City aCity) {
    //for (aCity  : cityFromList) {
    //  for (City cityB : cityToList) {
    //      System.out.println(cityA + " is adjacent to " + cityB);
    //  }
    //}

}

2 个答案:

答案 0 :(得分:1)

您可以使用HashMap<City, HashSet<City>>结构,其中键是城市对象,并指向一组相邻的城市。

答案 1 :(得分:0)

最简单的方法是:

for (i = 0; i < cityFromList.length(); i++) {
  if (cityFromList.get(i).equals(aCity)) {
    System.out.println(aCity + " is adjacent to " + cityToList.get(i) + ".");
  }
}

这当然要求“City”类需要实现equals方法,因此也需要实现hashcode方法。