2013-01-06 493 views
0


我有一個多個ArrayList的航點的問題。 我有一艘船。 一艘船有航點。ArrayList的二維陣列列表

public static ArrayList<Waypoint> _waypoints = new ArrayList<>(); 

要添加新的航點我用

Screen._waypoints.add(
         new Waypoint(
          12,20 
         ) 
        ); 
Screen._waypoints.add(
         new Waypoint(
          15,50 
         ) 
        ); 
Screen._waypoints.add(
         new Waypoint(
          17,90 
         ) 
        ); 

這意味着:

  1. 船舶 - > 12,20
  2. 船舶 - > 15,50
  3. 船舶 - > 17,90

我修改了我的遊戲,並添加了船型,這意味着每種類型的船都有不同的航點。

我修改了航點的初始化。

public static ArrayList<ArrayList<Waypoint>> _waypoints = new ArrayList<ArrayList<Waypoint>>(); 

我想創建這樣的結構:
船舶 - >木材 - >航點
例如數組列表我有兩種類型的船 - >木材和海盜船。

船舶 - >木材

  1. 船舶 - > 12,20
  2. 船舶 - > 15,50
  3. 船舶 - > 17,90

船舶 - >海盜

  1. 船 - > 12,20
  2. 艦 - > 15,50
  3. 船舶 - > 17,90

爲了讓我想用這個木材的ArrayList中:

waypoints.get("wood"); 

我不知道如何實現它使用的ArrayList中

由於二維數組列表,

+3

你正在尋找一個[圖](http://docs.oracle的.com/JavaSE的/ 6 /文檔/ API/JAVA/util的/ Map.html)。雖然說實話像靜態一樣保持數據是一種代碼味道。但是,是的,使用地圖代替。 – Perception

+1

你可以使用'Map'和''wood''並且'pirate'將會是你的密鑰,'ArrayList '將會與它相關聯。 – kaysush

回答

3

你正在尋找一個Map

public static Map<String, List<Waypoint>> wayPoints = new HashMap<String, List<Waypoint>>(); 

雖然,更好的辦法是使自己的ShipType類,並存儲在船舶本身航點的列表。更有可能的是,您將擁有更多特定於一種船型的特性。這使您可以將這些內容整合到一個類中,從而創建更易於管理的設計。然後

public class ShipType { 
    private List<Waypoint> wayPoints = new ArrayList<Waypoint>(); 
    /* ... */ 
} 

Ship小號可以有一個ShipType而不是「剛」與他們的船類型的名稱。

public class Ship { 
    private ShipType type; 
    /* ... */ 
} 

然後,只需讓你ShipType s的Map正確構造你的Ship秒。

public static Map<String, ShipType> ships = new HashMap<String, ShipType>(); 
// Register ship types 
ships.put("wood", new WoodShipType()); 
// Construct a ship 
Ship myShip = new Ship(); 
myShip.setType(ships.get("wood")); 

或者,您也可以使用enum與重載方法來表示船型的固定號碼,擺脫static收集完全。

3

如何使用Map

Map<String, List<WayPoint>> wayPoints = new HashMap<String, List<WayPoint>>(); 
wayPoints.put("wood", new ArrayList<WayPoint>()); 

然後拿到木料ArrayList中:

List<WayPoint> woods = wayPoints.get("wood"); 
1

您可以使用HashMap

public HashMap<String,ArrayList<Waypoint>> waypoints=new HashMap<String,ArrayList<Waypoint>>(); 

waypoints.put("wood",array list objetct); //insertion 

ArrayList<Waypoints> obj=waypoints.get("wood");