如何在多值HashMap中添加和删除项?

时间:2012-04-08 12:51:04

标签: java collections hashmap

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

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

我实际上想要保留对特定项目的引用(例如Android中的视图信息),因此Integer的{​​{1}}值将包含项HashMap,这是{唯一的,ID List将包含项X坐标值。用户可以在屏幕上有很多项目,他也可以有100个具有相同ID的项目,因此List将包含每个Items X坐标值。

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

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

现在我添加List值如下......

Float

我现在面临的问题是弄清楚每次创建新ID时如何实例化新的List ..

我必须为100个项目创建100个List,这是不可行的,不知道ID的数量..

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

此外,我想找到一种方法从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);

中删除特定键的特定值

2 个答案:

答案 0 :(得分: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);
    }
}

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

答案 1 :(得分:2)

您可以使用GuavaMultimap