我有自定义对象 Bus 的 ArrayList ,其中包含字符串成员 origin 和 destination 。成员有get和set方法。
我想写一个方法来识别ArrayList中具有相同来源和目的地的总线。
最有效的方法是什么?可以利用Collections API吗?
不幸的是,我不能使用任何第三方库,如Commons或Guava。
非常感谢任何建议。
编辑:我无法控制总线类,因此我无法添加任何方法或成员。
编辑:我也无法定义任何新类。
答案 0 :(得分:2)
你应该考虑添加这样的结构:
class Line {
private String origin;
private String destination;
..getters..
..setters..
public int hashCode() {
...
}
public boolean equals(Object o) {
...
}
}
将您的公共汽车存放在
中Map<Line, List<Bus>>.
不要忘记实现hashCode / equals属性。
答案 1 :(得分:0)
写一个Comparator
,首先与原点进行比较,然后再与目标进行比较。使用比较器使用Collections.sort(List, Comparator)
对列表进行排序。与另一辆公交车具有相同出发地和目的地的公交车现在将在列表中彼此相邻。