我有一个 DurationBetween 类,表示原始位置和目的地之间的旅行持续时间。该类具有三个属性:int dur
、String orig
和 String dest
。
我正在尝试获取一组位置之间的持续时间。我已经为此做了计算。
我有 3 个数组列表,如下所示:
listOrig: current, dest1, dest2, dest3
listDest: dest1, dest2, dest3
listDur: 2, 3, 5, 0, 1, 3, 9, 0, 2, 3, 2, 0
listDur
通过获取从 current
到 dest1
、dest2
、dest3< 的持续时间来生成
,然后从 dest1
到 dest1
、dest2
、dest3
,然后 dest2
到 dest1
、dest2
、dest3
等。总共 12 个。
请注意,当原始位置与目的地相同时,持续时间 = 0。
现在我需要启动一堆 DurationBetween
类来存储 orig
和 dest
对。所以类似
DurationBetween durationBetween = new DurationBetween(2, current, dest1);
DurationBetween durationBetween = new DurationBetween(3, current, dest2);
DurationBetween durationBetween = new DurationBetween(5, current, dest3);
DurationBetween durationBetween = new DurationBetween(1, dest1, dest2);
...
我在初始化类时遇到问题,因为列表的大小不同。我现在拥有的代码为我提供了 orig 和 dest 对,但我无法让 dur 根据这些对进行相应更新。
这就是我所拥有的:
// create classes of dur, orig, dest
// one orig will go to multiple dest and have multiple dur
for (int i = 0; i < listOrig.size(); i++) {
for (int j = 0; j < listDest.size(); j++) {
String orig = listOrig.get(i);
String dest = listDest.get(j);
// DEFINITELY NOT RIGHT
for (int k = 0; k < listDur.size(); k++) {
int dur = Integer.parseInt(listDur.get(k));
if (dur != 0) { // skip instances where orig and dest are the same
DurationBetween durationBetween = new DurationBetween(dur, orig, dest);
listDurBtwn.add(durationBetween);
}
}
}
}
public class DurationBetween {
private int dur;
private String orig;
private String dest;
public DurationBetween(int dur, String orig, String dest) {
this.dur = dur;
this.orig = orig;
this.dest = dest;
}
}
最佳答案
我认为你需要用以下内容替换“绝对不正确”的部分:
int k = (i * listDest.size()) + j;
int dur = Integer.parseInt(listDur.get(k));
if (dur != 0) { // skip instances where orig and dest are the same
DurationBetween durationBetween = new DurationBetween(dur, orig, dest);
listDurBtwn.add(durationBetween);
}
关于java - 组合具有不同端点的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171547/