ArrayList的二维arrayList

时间:2013-01-06 15:25:54

标签: java arraylist dimensional


我遇到了多个航点的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. 发货 - &gt; 12,20
  2. 发货 - &gt; 15,50
  3. 发货 - &gt; 17,90
  4. 我修改了游戏,并添加了船型,这意味着每种类型的船都有不同的航点。

    我修改了航点初始化。

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

    我想创建这个结构:
    发货 - &gt;木材 - &gt;航点数组列表
    例如,我有两种类型的船 - &gt;木船和海盗船。

    发货 - &gt;木

    1. 发货 - &gt; 12,20
    2. 发货 - &gt; 15,50
    3. 发货 - &gt; 17,90
    4. 发货 - &gt;海盗

      1. 发货 - &gt; 12,20
      2. 发货 - &gt; 15,50
      3. 发货 - &gt; 17,90
      4. 要获取我想要使用的木材的arrayList:

        waypoints.get("wood");
        

        我不知道如何使用arrayList的二维arrayList

        来实现它

        谢谢,

3 个答案:

答案 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 ShipTypeShip即可正确构建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");