0

私はオブジェクトのリストを持っています:

static List table_rows = new ArrayList();

String と Integer 配列オブジェクトで構成される TreeMaps で埋めたいもの:

    for (int i = 0; i < observation_files.length; i++) {
        TreeMap<String, Integer[]> tm = new TreeMap<String, Integer[]>();
        Integer[] cells = new Integer[observation_files.length];
        for (int x = 0; x < cells.length; x++) {
            cells[x] = 0;
        }
        tm.put("model" + i, cells);
        table_rows.add(tm);
    }

今私は次のようにint配列にアクセスしたい:

        table_rows.get(0).get("model1")[0] = 2;

しかし、Eclipseではこれを行うことができず、次のエラーが表示されます:

 Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method get(String) is undefined for the type Object
    Syntax error on token ".", Identifier expected after this token

        at HmmPipeline.main(HmmPipeline.java:102)

コードのヒントや補完で作業するものが何もないのですが、何が間違っていますか?

4

4 に答える 4

1

生のArrayList.get()返品タイプObject。を返したい場合TreeMap<String, Integer[]>は、リストを次のように宣言する必要があります。

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>();

Eclipse などの IDE を使用している場合は、生の (パラメーター化されていない) 型を使用しているときに警告を表示するようにコード コンパイル オプションを設定することをお勧めします。とにかく、コードに無効のフラグを立てる必要がありましたが。

余談ですが、あなたがやろうとしていることは、基本的に 2 次元の正方配列を格納する効果的な方法ではありません。

于 2012-07-22T15:05:30.427 に答える
1

宣言でそれtable_rows.get(0)をキャスト(TreeMap<String, Integer[]>)または定義する必要があります。table_rows

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>();
于 2012-07-22T15:05:40.190 に答える
1

試す

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>();

または、次のようにキャストする必要があります。

((TreeMap<String, Integer[]>)table_rows.get(0)).get("model1")[0] = 2;

また、関心のある機能に応じて、TreeMap次のインターフェイス タイプのいずれかのリファレンスを使用して参照できます。

  • Map<K,V>
  • NavigableMap<K,V>
  • SortedMap<K,V>
于 2012-07-22T15:05:49.307 に答える
0

1.使用する ArrayList のタイプを宣言する必要があります。

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>();

2.このように Map を反復します。

for (Map.EntrySet(String, Integer) temp : tm.entrySet()){

        // use getKey(), getValue() and do whatever u want.

       }
于 2012-07-22T15:10:43.747 に答える