我遇到了多个航点的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
)
);
这意味着:
我修改了游戏,并添加了船型,这意味着每种类型的船都有不同的航点。
我修改了航点初始化。
public static ArrayList<ArrayList<Waypoint>> _waypoints = new ArrayList<ArrayList<Waypoint>>();
我想创建这个结构:
发货 - &gt;木材 - &gt;航点数组列表
例如,我有两种类型的船 - &gt;木船和海盗船。
发货 - &gt;木
发货 - &gt;海盗
要获取我想要使用的木材的arrayList:
waypoints.get("wood");
我不知道如何使用arrayList的二维arrayList
来实现它谢谢,
答案 0 :(得分: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;
/* ... */
}
然后,只需保留Map
ShipType
个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
来表示固定数量的船舶类型,并完全删除该{{1}}集合。
答案 1 :(得分: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");
答案 2 :(得分: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");