我必须在一个文件中读到一个字母(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);
// }
//}
}
答案 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方法。