我有两个简单的ArrayLists,一个用于3个总线,一个用于3个路由。
ArrayList<Bus> busList = new ArrayList<Bus>();
busList.add(new Bus("B101", 20, 4, 16));
busList.add(new Bus("B102", 20, 6, 14));
busList.add(new Bus("B103", 20, 0, 20));
ArrayList<Route> routeList = new ArrayList<Route>();
routeList.add(new Route("R75", "Atlanta", "Cincinnati", "Chattanooga, Knoxville, Lexington", 150));
routeList.add(new Route("R95", "Miami", "Savannah", "Jacksonville", 200));
routeList.add(new Route("R275", "Milford", "Mariemont", "Loveland, Blue Ash", 25));
我希望每辆公交车都与一条路线相关联。我对数据库技术的经验让我觉得我想要一些外键设置?总线B101之类的东西会在其ArrayList中使用R95来关联特定路径。
我想要的功能是用户输入来搜索路径ArrayList中的特定开始和结束位置,然后确定特定链接总线的座位可用性。
答案 0 :(得分:2)
对于关联,使用HashMap。
Map<String,Route> busToRoutesMap = new HashMap<String,Route>();
// key = "B101", value = R95; getName() delivers String "B101"
busToRoutesMap.put(busList.get(0).getName(), routeList.get(1));
检索关联:
Route route = busToRoutesMap.get(busList.get(0).getName());
这将提供Route R95。
我个人更喜欢原始密钥,这样我可以更好地将其序列化为文件。 还有一些其他优点(更快,不需要覆盖hashcode())
在这种情况下,我不会将BUS对象用作密钥,而是使用busID,或者在您的情况下使用busName。
答案 1 :(得分:0)
您应该在每个Route
中创建一个ArrayList<Route>
属性(或Bus
),用于存储对同一Route
实例的引用。
答案 2 :(得分:0)
数组列表使用整数 - >元素关系。你想要一张地图。由于任何类型的元素都可以是键,因此值可以引用键。请注意,密钥必须是唯一的。
我建议对两个表使用hashmap或treemap。树图通过比较工作,哈希图通过散列工作。
如果您需要一个键的多个值,请使用[value class]的ArrayList作为实际值类型。
由于对象使用引用,因此它们可以相互引用,并允许每个对象的更改传播到其他地图。