0

Data クラスには price (double)、operator (string) の 2 つのフィールドが含まれています。以下に示すマップの各キーに Data クラスを複数の値としてマッピングしました。

コードに表示できません 2)。同じキーの下にマップされたすべての値

たとえば、キー = 1 の場合、マップには価格 {0.2,0.3,0.4} 、演算子: {A,B,C} の値があります。

このコードの出力には、price= 0.2、Operator: A for Key 1 のみが表示されます。他のすべての値は表示されません。それを解決する方法は?

1) Map<Integer, ArrayList<Data>> mp = new HashMap<Integer, ArrayList <SortData>>();

2)

       ArrayList<Data> ls = mp.get (keys.get(k));

              int i=0;
            for ( Data e: ls)
            {           
     System.out.println(e.getOperator() + e.getPrice());
                i++;    
            }

マップにデータを追加するコード:

enter code here
     ArrayList<Test> list = new ArrayList<Test>();
      Map<Integer,ArrayList<Test>> mp = new HashMap<Integer,ArrayList<Test>>();
       list.add(new Data(0,1,"A"));
    list.add(new Data(0,2,"B"));
     mp.put(1,list);

  List<Test> value = mp.get(1);
  value.add(0.3,"c");
  value.add(0,5,"E");
4

1 に答える 1

1

マップに値を追加するためのコード - コンパイル エラー。Data オブジェクトを ArrayList に追加することはできません。

あなたの反復コードは正しいです。したがって、値は単にマップに存在しないと思います。したがって、すべてのコードを確認して、リストから値を削除してください。また、値を追加するコードで、マップに格納されている同じインスタンスに値を追加してください。

それにもかかわらず、より少ないエラーフォン コードを作成するには、Guava MultiMap の使用を検討してください

于 2013-01-28T03:33:21.107 に答える