Чтение Java и размещение в Hashmap внутри Hashmap - PullRequest
0 голосов
/ 23 января 2019

Этот вопрос касается того, как добавить объекты типа пассажира в Hashmap, который находится внутри Hashmap из 4 станций.У меня есть объекты TrainStation, которые содержат идентификатор номера станции, и объекты Passenger, которые содержат информацию о пассажире, включая станцию, на которую они будут отображаться.

public class TrainStation extends Actor {
int id;

public int getId() {
    return id;
}

public TrainStation(int id) {
    this.setColor(Color.black);
    this.id = id;
}
public static Map<Integer,Passenger> passengersDepart = new HashMap<>();

public class Passenger {
int id;
int appearTimeStep;
int originStationId;
int destinationStationsId;
int tripStartTimeStep;
int tripEndTimeStep;
int traveTime;

public Passenger(int id, int appearTimeStep, int originStationId, int  destinationStationId) {
    this.id = id;
    this.appearTimeStep = appearTimeStep;
    this.originStationId = originStationId;
    this.destinationStationsId = destinationStationId;
}

4 Станции добавляются в основную и сохраняются в отдельной статической карте станций (не показана) в файле класса набора данных.Я читаю информацию о пассажирах из CSV, сортирую их по полю станции и хочу добавить их на карту пассажиров соответствующей станции.

    public static void readData(String path) throws IOException {
        BufferedReader pBufferedReader = new BufferedReader(new FileReader(path));
        String newline;

        //read header, output index number of each item
        String[] header = pBufferedReader.readLine().split(",");
        int idIndex = findPositionInArray("id", header);
        int appearTimeStepIndex = findPositionInArray("appearTimeStep", header);
        int originStationId = findPositionInArray("originStationId", header);
        int destinationStationsId = findPositionInArray("destinationStationId", header);

        //read body lines
        while ((newline = pBufferedReader.readLine()) != null) {
            String[] lineElements = newline.split(",");
            int id = Integer.parseInt(lineElements[idIndex]);
            int tStep = Integer.parseInt(lineElements[appearTimeStepIndex]);
            int oId = Integer.parseInt(lineElements[originStationId]);
            int dId = Integer.parseInt(lineElements[destinationStationsId]);
            Passenger passenger = new Passenger(id, tStep, oId, dId);
            //I NEED THIS TO ACCESS EACH INDIVIDUAL STATION MAP
            if (passenger.destinationStationsId == 1) {
                DataSet.tsMap.put(passenger.getId(), passenger);
            }
            else if (passenger.destinationStationsId == 2){
                TrainStation.passengersDepart.put(passenger.getId(), passenger);
            }
            else if (passenger.destinationStationsId == 3) {
                TrainStation.passengersDepart.put(passenger.getId(), passenger);
            }
            else {
                TrainStation.passengersDepart.put(passenger.getId(), passenger);
            }
        }

        pBufferedReader.close();
    }

Проблема, с которой я сталкиваюсь, состоит в том, чтобы поместить объект пассажира, созданный из CSV, не в хэш-карту железнодорожных станций (где он все равно не будет использоваться, поскольку это пассажир типа, а не тип станции).), но в hashmap списка людей, который находится внутри hashmap железнодорожного вокзала.

...