gpt4 book ai didi

java - 建模 Java 可迭代 : Route impl Iterable or route. station()?

转载 作者:行者123 更新时间:2023-12-02 03:25:49 26 4
gpt4 key购买 nike

我的域中有 RouteStation 类。路线描述了车辆通过序列车站和旅程元数据(运营商、公交车号等)所采取的旅程。

因此,路线将有一个车站列表和一些附加元数据。此列表还需要一些辅助方法,例如firstStation() 和lastStation(),这里我有两个选项:

<小时/>

在 Route 类中实现它们:

public class Route implements Iterable<Station> {

// metadata

private List<Station> stations;

public Station firstStation() {
return stations.get(0);
}

public Station lastStation() {
return stations.get(stations.size() - 1);
}

@Override
public Iterator<Station> iterator() {
return stations.iterator();
}


// ...
}

唯一让我担心的是 Route 提供了 Station 迭代器,这对开发人员来说可能不是很明显,尤其是在这种情况下:

for (Station st : route)

但是第一个/最后一个方法看起来很自然:

Station st = route.firstStation();
<小时/>

另一个想法是创建自定义集合实现:

public class Stations implements Iterable<Station> {
private List<Station> stations;

public Stations(List<Station> stations) {
this.stations = stations;
}

public Station lastStation() {
return stations.get(stations.size() - 1);
}

public Station firstStation() {
return stations.get(0);
}

@Override
public Iterator<Station> iterator() {
return stations.iterator();
}
}

public class Routte {
private Iterable<Station> stations = new Stations();

public Iterable<Station> stations() {
return stations;
}
}

所以这段代码更有意义:

for (Station st : route.stations())

这种方法更加冗长,并且需要一些技巧才能创建 JPA 映射。

这个问题与您的个人喜好有关,我很高兴听到您的建议和想法,即您认为应如何实现上述代码(以及原因)。

最佳答案

由于您的自定义方法似乎在我想要的“路线”上运行

public class Route {
private List<Station> stations;

public Station firstStation() {
return stations.get(0);
}

public Station lastStation() {
return stations.get(stations.size() - 1);
}

public Iterable<Station> getStations() {
return stations;
}

private static class Station {

}
}

这允许您向路由添加自定义方法,并且仍然具有

for (Station st : route.getStations())

关于java - 建模 Java 可迭代 : Route impl Iterable<Stations> or route. station()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913765/

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