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

その後、配列は「日」の最小値から「日」の最大値までソートされます。

私の質問:すべての「値」を同じ「日」に結合したいのですが、「値」を加算または減算する必要があり、最終的な配列には毎日 1 つの値しか保持されません。

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の値を保持したいので、使用する必要はありません。uniquehashmap

于 2013-02-16T12:18:09.160 に答える
2

不要なフィールドを除外して、この方法を試してください。

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

すべてのサイクルで:

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

set.put(day, value);

このようにして、1日に1つの値を持つハッシュが得られます。

于 2013-02-16T12:23:30.147 に答える