0

数据类包含两个字段价格(双精度),运算符(字符串),我将数据类作为多个值映射到映射的每个键,如下所示 1)。

我无法在代码 2) 中显示。映射在同一键下的所有值,

例如,对于 Key=1,map 的值为 Price {0.2,0.3,0.4} ,运算符:{A,B,C}

此代码的输出只能显示价格= 0.2,运算符:A 表示键 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

在您向地图添加值的代码中 - 编译错误。您不能将数据对象添加到 ArrayList。

您的迭代代码是正确的。所以我相信这些值根本不存在于地图中。因此,查看所有代码从列表中删除值。并确保在添加值代码中将值添加到存储在 Map 中的同一实例中。

尽管如此,要创建更少的错误电话代码,请考虑使用Guava MultiMap

于 2013-01-28T03:33:21.107 回答