0

私はAndroidアプリケーションを書いています。ユーザーが場所を配列に追加できる部分があります。この場所は、履歴を保存するために使用されます (ボタン @ 時間 @ 場所をクリックしました)。ここで、すべての場所でボタンをクリックした回数をカウントする必要があります。

例:
アーケード: 1
パーク: 4
プール: 0

これまでのところ、HashSet を使用して 2 次元配列を作成しようとしましたが、もっと良い方法があるはずです (とにかく、この方法を機能させることはできません)。乾杯!

4

3 に答える 3

0

これはどうですか:

private Map<String, HistoryData> historyMap = new HashMap<String, HistoryData>();

private class HistoryData {
    int count;
    List<String> locations = new ArrayList<String>();
}

private void updateClickCount(String name){
    HistoryData data = getHistoryData(name);
    data.count++;
}
private void addLocatioon(String name, String location){
    HistoryData data = getHistoryData(name);
    data.locations.add(location);
}

private HistoryData getHistoryData(String name){
    HistoryData data = historyMap.get(name);
    if(data == null){
        data = new HistoryData();
        historyMap.put(name, data);
    }
    return data;
}
于 2013-02-23T22:05:10.297 に答える
0

のように聞こえますが、GoogleのライブラリHashMapを使用する場合は、ニーズに合うでしょう。 GuavaMultiSet

上記のリンクから:

Guava は新しいコレクション タイプ Multiset を提供します。これは、要素の倍数の追加、および multiset に含まれる各要素の出現回数のカウントをサポートします。特に、Multiset は負の要素数や Integer.MAX_VALUE を超える要素数をサポートしていません。

于 2013-02-23T21:50:57.837 に答える
0

特に質問のタイトルが問題の説明と一致していないため、問題の説明が非常に悪いと思います。

配列を使用していて、ある配列内のエントリのうち、別の配列には存在しないエントリの数を特定しようとしている場合:

List<Integer> aList =  Arrays.asList(a);
List<Integer> bList =  Arrays.asList(b);
int countBefore = aList.size();
aList.retainsAll(bList);
int uniqueCount = countBefore - aList.size();

aList には、bList にもある要素のみが含まれるようになるため、前後の長さを比較すると、bList 内の一意の要素の数がわかります。

于 2013-02-23T21:59:29.550 に答える