0


我对多个 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的二维arrayList来实现它

谢谢,

4

3 回答 3

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的 s 可以有一个ShipType而不是“只是”他们船型的名称。

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

然后,只需保留MapShipType的 s 即可正确构建您Ship的 s。

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集合。

于 2013-01-06T15:30:54.523 回答
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");
于 2013-01-06T15:31:07.933 回答
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");
于 2013-01-06T15:35:42.977 回答