Java. Методы put и putIfAbsent HashMap у меня не работают должным образом. Чего я не замечаю?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java. Методы put и putIfAbsent HashMap у меня не работают должным образом. Чего я не замечаю?

Сообщение Anonymous »

Код — это третий случай функции. Мой проект является ответвлением OpenMetroMaps, и я пишу функцию, которая работает как система продажи билетов. Есть три типа билетов, и третий тип работает плохо.
В коде src — параметр функции типа станции.
Полный третий случай:

Код: Выделить всё

case TIME_LIMIT :

Set vStations = new HashSet();
List stationList = new ArrayList();

Map stationMap = new HashMap();
Map stationLineMap = new HashMap();

stationList.add(src);
vStations.add(src);
stationMap.put(src, 0.0);

while(!stationList.isEmpty()){

Station currStation = stationList.remove(0);
double currTime = stationMap.get(currStation);

// If the time exceeds the limit or we are at the starting station, do not add
if( currTime > limit ){
continue;
}

// Collecting stops
List currStops = currStation.getStops();
Set currLines = new HashSet();

// Collecting lines
for( Stop stop : currStops){
currLines.add(stop.getLine());
}

stationLineMap.put(currStation, currLines);

// Collecting stops of the lines
for( Line line : currLines){
List lineStops = line.getStops();

for(int i = 0; i < lineStops.size() ; i++){
Stop stop = lineStops.get(i);
Station nextStation = stop.getStation();

if(!vStations.contains(nextStation)){

double distance = calculateDistance(currStation, nextStation);
double travelTimeMin = ( distance / 40 ) * 60 + 1;
double finalTime = travelTimeMin + currTime;

Set lines = stationLineMap.putIfAbsent(nextStation, new HashSet());
lines.add(line);

if(!lines.contains(line)){
finalTime += 6;
}

if(finalTime 

Подробнее здесь: [url]https://stackoverflow.com/questions/79128472/java-the-put-and-putifabsent-methods-of-hashmap-dont-work-properly-for-me-wh[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»