我有一个由String元素随机填充的String数组。我想迭代数组并记住找到多少重复元素。我找到了其他答案,只是检查是否有重复或重复的位置,但没有数组中存在多少重复。
例如:
String [] arrayToCheck = {"A", "B", "C", "A", "B", "C"};
找到的重复数量为3(每个字符串中有1个重复)。
我尝试了许多不同的东西,但似乎无法提供能够给出正确答案(数组中重复数量)的代码,无论有多少重复。
这是我尝试无效的地方:
int numDupes = 0;
for (int j = 0; j < arrayToCheck.length; j++)
for (int k = j + 1; k < arrayToCheck.length; k++)
if (k != j && arrayToCheck[k].equals(arrayToCheck[j]))
numDupes++;
和
int numDupes = 0;
for (String someVal : arrayToCheck) {
for (int i = 0; i < arrayToCheck.length; i++) {
if (arrayToCheck[i].equals(someVal)) {
numDupes++;
}
}
}
和
int numDupes = 0;
for(int i = 1; i < arrayToCheck.length; i++) {
if(arrayToCheck[i].equals(arrayToCheck[i-1])) {
numDupes++;
}
}
谢谢!
答案 0 :(得分:2)
将其转换为集合..然后(length_of_Set - length_of_Array)是重复元素的计数。
注意:这不会告诉您每个元素重复多少次或重复哪些元素。
答案 1 :(得分:2)
您可以执行以下操作。将它放在一个以count为值的地图中。然后只需使用count > 1
计算字符串。
String [] someArray = new String[]{"A", "B", "C", "A", "B", "C"};
Map<String,Integer> repeatationMap= new HashMap<String,Integer>();
for(String str : someArray){
if(repeatationMap.containsKey(str)) {
repeatationMap.put(str,repeatationMap.get(str) + 1);
}
else {
repeatationMap.put(str, 1);
}
}
int count = 0;
for(int repatCount : repeatationMap.values()){
if(repatCount > 1) {
count++;
}
}
System.out.println("Number of Strings repeated : " + count);