2013-01-06 494 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");