2016-04-16 5 views
-2

Warum funktioniert meine CountRecur-Methode nicht? Ich habe versucht, es durchkämmen, aber keine Würfel. Ich weiß, dass es nicht so gut optimiert ist, aber ich habe alles versucht, und ich dachte mir, ich könnte es versuchen.Warum funktioniert meine CountRecur-Methode nicht, ich habe versucht, sie durchzukämmen, aber keine Würfel

Angenommen, StrArr1 ist bereits in alphabetischer Reihenfolge, und alle Zeichenfolgen darin sind Wörter, die mehr als einmal auftreten können, sie sind auch alle in Low Caps. Die Entfernung funktioniert gut, ich habe es getestet.

public void CountRecur() { 
    ArrayList <String> StrArr2 = new ArrayList <String>(); 
    StrArr2 = StrArr1; 
    this.RemoveRecur(StrArr2); 
    int count = 0; 
    int j = 0; 
    for (int i = 0; i <= StrArr2.size(); i++) { 
     if (count != 0) { 
      IntArr.add(count); 
     } 
     count = 0; 
     if (i < StrArr2.size()) { 
     while (j < StrArr1.size() && StrArr2.get(i).equals(StrArr1.get(j))) { 
      count++; 
      j++; 
      } 
     } 
    } 
} 

public void RemoveRecur(ArrayList <String> StrArr3) { 
    int i = 1; 
    while (i < StrArr3.size()) { 
     if (StrArr3.get(i).equals(StrArr3.get(i - 1))) { 
      StrArr3.remove(i - 1); 
      i = 0; 
     } 
     i++; 
    } 
} 
+0

1) Zuordnung StrArr2 = new Arraylist ist verschwenderisch und sinnlos, da in der nächsten Zeile Sie es StrArr1 zuweisen. Erklären Sie es einfach so: ArrayList StrArr2 = StrArr1; und überspringe den neuen ArrayList-Teil. 2) Es ist schwer, Ihrer CountRecur-Methode zu folgen, der Code ist ziemlich schlecht geschrieben und nicht einfach zu folgen. Was genau ist die Absicht der Methode und was ist Ihre genaue Frage einschließlich der Ergebnisse, die Sie bekommen und erwarten, zu bekommen? – pczeus

+0

Von dem, was ich von Ihrem Code sehen kann, versuchen Sie, doppelte Zeichenfolgen aus einer String-Liste zu entfernen und dann die Anzahl der gefundenen und entfernten Duplikate zu erfassen, ist das korrekt? Und wo ist der "Wiederholungsteil Ihres Codes"? – pczeus

+0

Um zu zählen, wie oft eine Zeichenfolge in StrArr1 wiederholt wird. Ich weiß, dass ich in der Theorie nicht einmal strarr2 brauche, aber ich habe alles versucht und das hat mich ein wenig näher an eine Lösung gebracht. – Harsh

Antwort

0

Da die Anzahl der Vorkommen eines Strings in einer Liste von Strings zu zählen versucht, kann dies viel einfacher gemacht werden, um eine Karte mit dem String als Schlüssel zu speichern und eine Zählung als Wert hält die Karte. Hier ist eine viel einfachere Methode, die das erreicht, was Sie die Karte Konzept wollen mit:

public Map<String, Integer> CountStrings(List<String> strings) { 
    Map<String, Integer> counts = new HashMap<>(); 

    for(String aString: strings){ 
     Integer count = counts.get(aString); 
     count = (count == null) ? 1 : ++count; 
     counts.put(aString, count); 
    } 

    return counts; 
} 

Sie sollten wirklich häufig verwendeten Standards in Java folgen und Kamel-Fall für beide Verfahren und Variablen-Namen verwenden. Die CountStrings Methode sollte sein: countStrings, StrArr1strArr1 sein soll usw.

+0

lol ich habe gerade nach dem Lösen eingecheckt. Ich versuchte meine ursprüngliche Idee und fand den dummen Fehler, den ich machte. es war eigentlich ziemlich einfach. – Harsh

+0

public void CountRecur() { \t \t int j = 0; \t \t int count = 0; \t \t int i = 0; \t \t während (i Harsh

+0

Ich lese Ihre Lösung nach der Befestigung – Harsh