0

我正在编写一个 Android 应用程序。我有一部分用户可以将位置添加到数组中。然后这个位置被用来存储历史(他们点击了按钮@时间@位置)。我现在需要计算他们在每个位置单击按钮的次数。

例如:
拱廊:1
公园:4
游泳池:0

到目前为止,我一直在尝试使用 HashSet 并创建一个二维数组,但似乎必须有更好的方法(而且我无论如何都无法使用这种方法)。干杯!

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

听起来像是 a HashMap,或者,如果您想使用 GoogleGuava的库, aMultiSet将满足您的需求。

从上面的链接:

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 回答