gpt4 book ai didi

java - 更改了 LinkedList 的元素 - 需要更改其余部分

转载 作者:行者123 更新时间:2023-11-30 08:01:33 25 4
gpt4 key购买 nike

我的程序是火车时刻表,显示城市以及到达和离开时间。在程序中,您可以键入“延迟”,然后键入城市名称和#ofminutes 以分钟为单位添加延迟到该城市的到达时间。这些信息都存储在一个LinkedList

Station        Arrival        Departure      Day            
Vancouver ----- 20:30 1
Kamloops 06:00 06:35 2
Jasper 16:00 17:30 2
Edmonton 23:00 23:59 2
Saskatoon 08:00 08:25 3
Winnipeg 20:45 22:30 3

我的输出是这样开始的^^^

因此,在我的“延迟”方法中,我能够调出指定的城市并将分钟数添加到到达时间,一切都很好。代码如下:

public void delay(String station,int minute){
String cityDelay=station;
int timeDelay=minute;
for(Station list: schedule){
if (cityDelay.equalsIgnoreCase(list.getCity())){
Calendar c = list.getArrivalDate();
c.add(Calendar.MINUTE, timeDelay);
System.out.println(list.getArrival()); //to see if it updated
}
}
}

但是,正是在这一点上,我必须将相同的分钟数添加到列表中的其余时间,但不能在实现延迟之前将这些更改应用于城市。

例如,如果我输入“Edmonton”和“30”,输出应该如下所示:

Station        Arrival        Departure      Day            
Vancouver ----- 20:30 1
Kamloops 06:00 06:35 2
Jasper 16:00 17:30 2
Edmonton 23:30 00:29 2
Saskatoon 08:30 08:55 3
Winnipeg 21:15 23:00 3

(我会在上类后的第二天弄清楚如何更新)

我不知道如何遍历它并将 session 记录的更新应用到列表的其余部分,同时排除所选城市之前的元​​素。我能想到的任何循环想法都会遍历整个列表。想法?我应该查找/谷歌的概念?提前致谢。

最佳答案

如果你有 apache commons collection library 或者你有自己的实现来通过谓词找到元素索引,你可以像这样:

public void delay(String station, int minute) {
int index = ListUtils.indexOf(schedule, object -> object.getCity().equals(station));
if (index == -1) {
return;
}
List<Station> updatedStations = schedule.subList(index, schedule.size() - 1);
updatedStations.forEach(s -> s.getArrival().add(MINUTE, minute));
}

关于java - 更改了 LinkedList 的元素 - 需要更改其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com