比较2个阵列&计算唯一条目

时间:2013-02-23 21:49:47

标签: java android eclipse

我正在编写一个Android应用程序。我有一个用户可以在阵列中添加位置的部分。然后,此位置用于存储历史记录(他们点击按钮@ time @ location)。我现在需要计算他们在每个位置点击按钮的次数。

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

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

3 个答案:

答案 0 :(得分:0)

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

从以上链接:

  

Guava提供了一种新的集合类型Multiset,它支持添加多个元素,并计算每个元素的出现次数。   multiset包含的元素。值得注意的是,Multiset不支持   负元素计数,也不是Integer.MAX_VALUE以上的元素计数。

答案 1 :(得分: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中唯一元素的数量。

答案 2 :(得分: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;
}