我需要创建一个Hallway类,该类将在Stand对象内部有2个ArrayLists
,一个用于右边的架子,另一个用于左边的架子。
我的意图是将这些ArrayLists
放在该类的另一个集合中。
我不知道我是否应该使用哈希表,地图等。
更重要的是,我的意图是使用如下方法访问这些ArrayList:
TheHashTable [“ Right”]。add(standObject); //在Hashtable内的右侧Stands ArrayList中添加一个Stand。
例:
public class Hallway {
private Hashtable< String, ArrayList<<Stand> > stands;
Hallway(){
// Create 2 ArrayList<Stand>)
this.stands.put("Right", RightStands);
this.stands.put("Left", LeftStands);
}
public void addStand(Stand s){
this.stands["Right"].add(s);
}
}
这可能吗?
最佳答案
有可能,但我建议不要这样做。如果您只有两个展位,那么简单地拥有两个类型为List<Stand>
的变量:leftStands
和rightStands
并具有相应的方法(addLeftStand(Stand)
,addRightStand(Stand)
等)将会更加清晰。代码将更加清晰,简单和安全。
如果您确实想按自己的方式去做,则地图的键不应为字符串。调用者将不知道将哪个键传递给您的方法(存在无穷的字符串),并且即使他知道键是“ Right”和“ Left”,他也可能会打错字,但不会被输入编译器。您应该改用枚举,这将使代码具有自说明性,并且更加安全:
public enum Location {
LEFT, RIGHT
}
private Map<Location, List<Stand>> stands = new HashMap<Location, List<Stand>>();
public Hallway() {
for (Location location : Location.values()) {
stands.put(location, new ArrayList<Stand>());
}
}
public void addStand(Location location, Stand stand) {
stands.get(location).add(stand);
}