我有一个String[]
数组,名为originalStringArray
,其中含有重复项,例如{"dog","cat","dog","fish","dog","cat"}
。
我想创建一个函数,只返回出现了特定次数的字符串。例如,如果我输入3,它会返回"dog",但不会返回"cat"。
以下是我当前的代码:
public ArrayList<String> returnMultiples(String[] originalStringArray,int requiredCount){
ArrayList<Integer> mCount = new ArrayList<>();
List<String> list = Arrays.asList(originalStringArray);
ArrayList<String> result = new ArrayList<>();
// Count occurrences in original string
for(String item: originalStringArray){
mCount.add(Collections.frequency(list,item));
}
// If frequency is equal to count, add to array list
for(int i=0; i<mCount.size(); i++){
if(mCount.get(i) == requiredCount){
result.add(originalStringArray[i]);
}
}
return result;
}
我遇到的问题是,我在某个地方读到说Collections库非常慢且拖累,并且似乎可以使用HashSets和tables来减少这种情况。不幸的是,我有些茫然,不知道该如何做。有没有更好的方法来解决这个问题?
Multiset
是Guava库中专门为此目的设计的东西。 - Mick Mnemonic