Hashmap中相同键的数据更新

时间:2014-08-22 04:33:24

标签: java hashmap duplicates

我正在编写从excel文件中读取数据的程序,该文件包含以下两列:

1-单位代码2-数量

单位代码包含可能重复的所有单位。我想添加相同单位代码的所有数量,而不会丢失任何数量。我想将这整个数据存储在hashmap中。

请帮帮我。

先谢谢。

2 个答案:

答案 0 :(得分:3)

您无法在HashMap中放置重复的密钥。但你可以试试这样的东西

Map<Key,List<Values>> map=new HashMap<>();

现在可以有所选键的值列表。

例如:

Map<String,List<String>> map=new HashMap<>();
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");

map.put("a",list);
System.out.println(map);

输出:

{a=[a, b, b]}

答案 1 :(得分:1)

您可以将数据存储在HashMap中。 &#39;单位&#39;可以作为键和数量的总和&#39;作为价值观。一旦找到&#39;单元,您就可以在HashMap中插入一个键值对。第一次。相应的数量将存储为值。现在再次从excel插入下一条记录时,请检查新的&#39;单元&#39;已存在于HashMap中。如果是,那么新的数量&#39;应该相加到相应的值。如果不是,那么新的条目将被放入地图中。 代码如下:

    Map<String,Integer> map=new HashMap<>();
    //Open the file for reading using some excel API

    //Read the unit and quantity line by line and assign them in `unit` and `quantity` variables
    String unit="";          // Read actual unit value from file
    int quantity=0;          // Read actual quantity value from file

    if(map.containsKey(unit)){
        map.put(unit, map.get(unit)+quantity);
    }

地图不允许重复键。因此,当您再次将相同的键放在地图中时,它将覆盖地图中的现有条目。因此,结果地图将包含单位和相应数量的总和作为条目。