3

ArrayList でインデックス付きオブジェクトのセットを作成することは可能ですか?

オブジェクトの配列 (Portal クラス) を作成し、ユーザーが定義するサイズの配列にインデックスを付けたいと考えています。

   import java.util.ArrayList;
    import java.util.Scanner;

    public class GameFunctions
    {
        Scanner sc = new Scanner(System.in);
        private int portalsQty;
        private String[] portalNamesDB = {"name1", "name2", "name3", "name4", "name5"};
        ArrayList<Portal> portals = new ArrayList<>();

        void setPortalsQty(int portalsQty)
        {
            this.portalsQty = portalsQty;
        }

        int getPortalsQty(int portalsQty)
        {
            return portalsQty;
        }
        private void createPortals()
        {
            System.out.println("type the

 amount of portals");
        portalsQty = sc.nextInt();
        System.out.println("number of portals: " + portals.size());
        for (int i = 0;  i < portalsQty; i++)
        {
            portals.add(i,p[i]);   // CANNOT HAVE VALUES INDEXED LIKE p[i] IN ARRAYLIST
        }


    }

    private void namePortals()
    {
        int randomNo = (int)(Math.random()*portalsQty);
        for (int i = 0;  i < portalsQty; i++)
        {
            System.out.println("Random: " + randomNo);
            portals[i].setPortalName(portalNamesDB[randomNo]);
        }
    }


    public void launchGame()
    {
        createPortals();
        namePortals();


    }

}

NullPointerException が発生するため、ユーザーが配列のサイズを定義すると、テーブルを使用できなくなります。テーブルの動的サイズを作成し、要素にインデックスを付ける他の解決策はありますか?

4

2 に答える 2

0

インデックスからオブジェクトにマップするマップを使用して、この動作をエミュレートできます。

Map<Integer, Portal> indexes = new HashMap<>();
于 2018-06-07T17:07:58.840 に答える