计算Java String数组中的重复元素

时间:2014-06-05 05:55:09

标签: java arrays string duplicates

我有一个由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++;
    }
}

谢谢!

2 个答案:

答案 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);