我有一个包含我所有数据的列表: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'的最高值。
我的问题:我想将所有“值”与相同的“日期”组合在一起,需要添加或减去“值”,我的最终数组每天只保存一个值
答案 0 :(得分:1)
试试这个:
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);
}
因此,对于每一天,您将拥有 a 值。在这种情况下无需使用array
,因为您希望为每个unique
天保留一个值,hashmap
就可以了。
答案 1 :(得分:1)
尝试这种方式,留下不必要的字段:
set = new HashMap<Integer, Integer>();
在每个周期中:
if (set.containsKey(day))
{
value += set.get(day);
}
set.put(day, value);
通过这种方式,您将获得每天一个值的哈希值。