1

我有一个包含我所有数据的列表:setData

List<Map<String, Integer>> setData = new ArrayList<Map<String, Integer>>();
Map<String, Integer> set;

并且值是这样添加的(这发生在循环中,当它遍历游标时):

set = new HashMap<String, Integer>();
set.put("value", value);
set.put("day", day);
setData.add(set);

数组随后被排序,从“day”的最低值到“day”的最高值。

我的问题:我想将所有“值”与相同的“天”结合起来,需要添加或减去“值”,我的最终数组每天只保存一个值。

4

2 回答 2

2

试试这个:

 Map<Integer, Integer> dayValue = new HashMap<Integer, Integer>();
 for(Map<String, Integer> set : setData) {
     int day = set.get("day"); 
     int value = set.get("value");
     int storedValue = dayValue.get(day);
     // do your addition or subtraction with value and storedValue,
     // and update the map after that
     dayValue.put(day, storedValue);
 }

因此,对于每一天,你都会有一个价值。在这种情况下不需要使用array,因为您想为每unique一天保留一个值,hashmap就可以了。

于 2013-02-16T12:18:09.160 回答
2

尝试这种方式,将不必要的字段排除在外:

set = new HashMap<Integer, Integer>(); 

在每个循环中:

if (set.containsKey(day))
{
  value += set.get(day);
} 

set.put(day, value);

这样,您每天将拥有一个包含一个值的哈希。

于 2013-02-16T12:23:30.147 回答