gpt4 book ai didi

java - ArrayList 的二维 arrayList

转载 作者:行者123 更新时间:2023-12-01 07:34:12 30 4
gpt4 key购买 nike


我遇到多个航点 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

要获取木材的数组列表,我想使用这个:

waypoints.get("wood");

不知道如何使用arrayList的二维arrayList来实现

谢谢

最佳答案

您正在寻找Map .

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

不过,更好的方法是创建自己的 ShipType 类并在船舶本身上存储航路点列表。您很可能会拥有更多特定于一种船舶类型的属性。这使您可以将它们整合到一个类中,从而实现更易于管理的设计。

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

您的船舶可以有一个ShipType,而不是“仅仅”其船舶类型的名称。

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

然后,只需保留 ShipTypeMap 即可正确构建您的 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集合。

关于java - ArrayList 的二维 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183580/

30 4 0