且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-12-05 16:02:22

这个怎么样:

  public class multivalueHashmap {
private Map<整数,列表<浮点> &GT; map = new HashMap<整数,列表<浮点> &GT;();
$ b 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);


code


$ b这样你就可以使用这些方法来轻松地添加和删除项目。

I am trying to add values to a multivalue HashMap which is of the following structure:

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

I actually wanted to hold a reference to a particular item (A View's info in Android for e.g.), so the Integer value of the HashMap will contain the items ID which is unique, the List of Floats will contain the items X coordinate values. The user can have many items on the screen, he can also have 100 items with same ID, so accordingly the List will contain each Items X coordinate value.

To be more clear my HashMap will contain the following data

{1,{200, 400.5, 500.6 ...}}, where 1 is the key and the rest are Float values for Item with ID 1.

Right now I add the List values as follows...

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);

The problem I am facing now is figuring out as of how can I instantiate a new List everytime a new ID is created..

I would have to create 100 List's for 100 items which is not feasible, not knowing the number of ID's..

Is there a better approach to solve this issue...

Also I wanted to find a way to delete a specific value of a particular key from the HashMap

How about this :

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);
    }
}

This way you can use the methods to easily add and remove items.