2014-06-05 212 views
-4

我有一個String數組已被String元素隨機填充。我想遍歷數組,並保持計數找到了多少重複元素。我發現了其他答案,只需檢查是否存在重複或重複的位置,但不檢查數組中是否存在多少重複。計算Java 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++; 

AND:

int numDupes = 0; 

for (String someVal : arrayToCheck) { 
    for (int i = 0; i < arrayToCheck.length; i++) { 
      if (arrayToCheck[i].equals(someVal)) { 
       numDupes++; 
      } 
    } 
} 

AND:

int numDupes = 0; 

for(int i = 1; i < arrayToCheck.length; i++) { 
    if(arrayToCheck[i].equals(arrayToCheck[i-1])) { 
     numDupes++; 
    } 
} 

謝謝!

+0

你的問題是什麼? –

+1

你的代碼在哪裏,或者你想讓我們編碼? – Kick

+0

你的意思是 - String [] someArray =「A,B,C,A,B,C」;或String [] someArray = {「A」,「B」,「C」,「A」,「B」,「C」} –

回答

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); 
2

將其轉換爲一組..然後(length_of_Set - length_of_Array)是您重複元素的計數。

注意:這不會告訴您每個元素有多少次重複或哪些元素被重複。

+0

請不要回答這些類型的問題,OP不想爲自己做一些代碼,並要求熟悉的代碼(**免費**)...(*順便說一下,我'不是-1的傢伙*) –

+1

@AnkitLamba - 這不是「熟」的代碼。我只是把他指向正確的方向。 – TheLostMind

+0

我並不是說你的答案是「熟」,我只是說** OP **想要一個「熟」的代碼。 –