Я хочу знать, пересекаются ли 2 автобусные линии (имеют общий busStop), а затем вернуть эти линии и автобусную остановку в список. Класс busLine
не имеет метода, который возвращает список остановок для использования операций со списками
Например: Im на 1-м элементе busLineList -> Я получаю 1-й busStop линии -> теперь проверяю все остальные busLineList
элементы, если они состоят из одного и того же busStop в своем списке.
busLineList -> busLine 1 -> busStop A
busStop B
-> busLine 2 -> busStop B
saving to the list: [ busLine 1, busLine 2, busStop B ]
Моя реализация возвращает неправильные списки. Возвращенный список size()
представляет собой сумму каждой автобусной остановки, которую я использую во всех автобусных линиях. Существует проблема с оператором if()
, поскольку при замене условия на true
он выдает тот же вывод.
/* This list consist of `BusLineInterface` objects which constructor
takes a `List` of `BusStopInterface` objects as parameter.
*/
private static List<BusLineInterface> busLineList;
/* This is `transferList` I want to create which contains `Lists`
of objects: bus x of line "x" that have same busStop with bus y on
line y, bus y, common bus stop
*/
private static List<List<Object>> transferList;
public PathFinder() {
busList = new ArrayList<>();
busLineList = new ArrayList<>();
transferList = new ArrayList<>();
}
public void transferTab() {
for (int i = 0; i < busLineList.size(); i++) {
for (int j = 0; j < busLineList.get(i).getNumberOfBusStops(); j++) {
for (int k = 0; k < busLineList.size(); k++) {
boolean flag = true;
if (i == k) { // Avoiding of checking same Lines
flag = false;
}
if (flag) {
for (int l = 0; l < busLineList.get(k).getNumberOfBusStops(); l++) {
if (busLineList.get(i).getBusStop(j).getName().equals(busLineList.get(k).getBusStop(l).getName())) {
List<Object> transfer = new ArrayList<>();
transfer.add(busLineList.get(i));
transfer.add(busLineList.get(k));
transfer.add(busLineList.get(k).getBusStop(l));
transferList.add(transfer);
}
}
}
}
}
}
}
РЕДАКТИРОВАТЬ: добавление методов busLine и busStop
private String name;
BusStop(String n) {
this.name = n;
}
@Override
public String getName() {
return name;
}
Шина:
private static List<BusStop> busStore;
BusLine(List<BusStop> b) {
busStore = new ArrayList<>(b);
}
@Override
public int getNumberOfBusStops() {
return busStore.size();
}
@Override
public BusStopInterface getBusStop(int number) {
return busStore.get(number);
}