2013-02-23 86 views
0

我正在写一个Android应用程序。我有一部分用户可以将位置添加到数组。这个位置然后用来存储历史(他们点击按钮@时间@位置)。现在我需要计算他们在每个位置点击了多少次按钮。比较2个阵列与计数的唯一条目

例:
商场:1
公园:4
游泳池:0

到目前为止,我一直在试图用一个HashSet &创建一个二维数组,但它似乎必须有一个更好的方式(我无法反正这种方式工作)。干杯!

+0

*什么*你不能去上班?你有错误吗?堆栈痕迹?你得到了什么产出,你期望什么?你为此写了什么代码? – Makoto 2013-02-23 21:50:46

+1

'Map '是要走的路。 – jlordo 2013-02-23 21:51:01

+0

你可以在你的'Location'类'counter'属性和1,当用户点击它添加。如果你只有'Location'标题自动取款机,你可以有一个'地图<字符串,位置>'由'HashMap'备份(因为你不需要为了也不排序元素)使用'Location'标题键。 – 2013-02-23 21:53:10

回答

0

听起来像是HashMap,或者,如果你想使用谷歌Guava库,MultiSet将满足您的需求。

从上面的链接:

番石榴提供了一种新的集合类型,多集,其支持添加元素的倍数,并且每个 元件的多重集包含多少次的计数。值得注意的是,多集不支持 消极因素罪名,也没有上述Integer.MAX_VALUE的元素计数。

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中唯一元素的数量。

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; 
} 
+0

感谢您分享此信息,很多时候我只是需要一个例子来弄清楚。看起来好像我可以通过你的代码找出它。你真棒! – SuperNub2TheRescue 2013-02-23 22:24:28

+0

对不起,如果这真的是'不好意思',但名称是指什么?正如方法getHistoryData(字符串**姓名**){ – SuperNub2TheRescue 2013-02-23 22:50:24

+0

'name'是你的组件,其记录你正在试图保持的名称。例如'getHistoryData(“Arcade”);''updateClickCount(“Park”);'等 – 2013-02-25 07:36:18