3

我正在尝试将值添加到具有以下结构的多值 HashMap:

Map< Integer, List<Float> > map = new HashMap< Integer, List<Float> >();

我实际上想保存对特定项目的引用(例如,Android 中的 A View 信息),因此 s 的Integer值将包含唯一HashMap的项目,s 将包含项目 X 坐标值。用户在屏幕上可以有很多项目,他也可以有 100 个具有相同 ID 的项目,因此列表将包含每个项目 X 坐标值。IDListFloat

为了更清楚,我的 HashMap 将包含以下数据

{1,{200, 400.5, 500.6 ...}},其中 1 是键,其余是 ID 为 1 的项的浮点值。

现在我添加列表值如下...

List<Float> list = new ArrayList<Float>();

list.add(x_coord_1);
list.add(x_coord_2);
list.add(x_coord_3)
map.put(1, list);

我现在面临的问题是弄清楚每次创建新 ID 时如何实例化一个新列表。

我将不得不为 100 个项目创建 100 个列表,这是不可行的,不知道 ID 的数量..

有没有更好的方法来解决这个问题...

我还想找到一种方法从HashMap

4

2 回答 2

9

这个怎么样 :

public class multivalueHashmap {
    private Map< Integer, List<Float> > map = new HashMap< Integer, List<Float> >();

    public void add(Integer id, Float value){
        if(!map.containsKey(id)){
            map.put(id, new ArrayList<Float>());
        }
        map.get(id).add(value);
    }

    public void delete(Integer id, Float value){
        if(!map.containsKey(id)){
            return;
        }
        map.get(id).remove(value);
    }
}

这样,您可以使用这些方法轻松添加和删除项目。

于 2012-04-08T13:58:16.500 回答
2

您可以使用GuavaMultimap

于 2012-04-08T14:51:54.483 回答