1

非常に単純なプログラムを実行しようとしていますが、ネストされたリストとマップを宣言する基本に固執しています。

多項式を ArrayList に格納する必要があるプロジェクトに取り組んでいます。各多項式には名前が付けられているため、キー/値マップで多項式の名前 (1、2、3 など) をキーとして取得し、実際の多項式を値として取得する必要があります。

このプログラムの性質上、指数を係数に関連付ける必要があるため、実際の多項式にもキー値が必要です。

たとえば、多項式の ArrayList が必要です。最初のものが単純だとします。

多項式 1: 2x^3

配列リストにはすべてがマップとして含まれており、マップにはキー: 多項式 1 と値: がマップであり、2 と 3 はキー/値です。

私が持っているコードは以下のとおりですが、そのようなネストされたロジックをフォーマットする方法については 100% ではありません。

public static void main(String[] args) throws IOException{
        ArrayList<Map> polynomialArray = new ArrayList<Map>();
        Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>();
        String filename = "polynomials.txt";
        Scanner file = new Scanner(new File(filename));

        for(int i = 0; file.hasNextLine(); i++){
            //this will eventually scan polynomials out of a file and do stuff

        }

編集: Map のキー/値を更新しましたが、まだ問題があります。

上記のコードは私に次のエラーを与えています:

Cannot instantiate the type Map<String,Map<Integer,Integer>>

では、どうすればこれを行うことができますか、それとも間違った方法で行っているのでしょうか?

4

2 に答える 2

2

インターフェースnew Map<String, Map<Integer, Integer>>()であるためインスタンス化できません(コンストラクターがありません)。次のような具象型を使用する必要があります。java.util.Mapjava.util.HashMap

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<String, Map<Integer, Integer>>();

また、Java 7 以降を使用している場合は、ジェネリック型推論を使用して入力を節約できます。

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>();
于 2013-07-11T06:21:43.597 に答える
1

これは正しくありません:

Map<String, Map<Integer>> polynomialIndex = new Map<String, Map<Integer>>();

マップには 2 つのパラメーターが必要ですが、ネストされたマップMap<Integer>には 1 つしかありません。次のようなものを探していると思います:

Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>();

または、別々に行うのが最善かもしれません。

Map<String, Map> polynomialIndex = new Map<String, Map>();
Map<Integer, Integer> polynomialNumbers = new Map<Integer, Integer>();

これにより、数値を polynomailNumbers マップに入れ、それを polynomialIndex で使用することができます。

于 2013-07-11T06:08:24.600 に答える