我有一个ArrayList自定义对象Bus,其中包含String成员origin和destination。成员有get和set方法。
我想写一个方法来识别数组列表中具有相同原点和目的地的总线。
做这件事最有效的方法是什么?可以利用集合API吗?
不幸的是,我不能使用任何第三方库,如Commons或Guava。
非常感谢您的建议。
编辑:我不能控制总线类,所以我不能向它添加任何方法或成员。
编辑:我也不能定义任何新的类。
您应该考虑添加这样的结构:
class Line {
private String origin;
private String destination;
..getters..
..setters..
public int hashCode() {
...
}
public boolean equals(Object o) {
...
}
}
并将您的总线存储在
中Map<Line, List<Bus>>.
不要忘记实现hashCode/equals属性
写一个Comparator
,首先与原点比较,然后与目标比较。使用比较器使用Collections.sort(List, Comparator)
对List进行排序。与另一个总线具有相同起点和目的地的总线现在将在列表中相邻出现。