我需要创建一个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>的变量:leftStandsrightStands并具有相应的方法(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);
}

10-07 13:37