Heim > Java > javaLernprogramm > So erhalten Sie verschiedene Zeichen und ihre Anzahl in einer Zeichenfolge in Java

So erhalten Sie verschiedene Zeichen und ihre Anzahl in einer Zeichenfolge in Java

王林
Freigeben: 2023-04-20 12:04:06
nach vorne
1878 Leute haben es durchsucht

So erhalten Sie verschiedene Zeichen und ihre Anzahl in einer Zeichenfolge

Diese Frage kann in zwei Schritte unterteilt werden. Der erste Schritt besteht darin, die verschiedenen Zeichen zu finden, und der zweite Schritt besteht darin, ihre Anzahl zu zählen. Es scheint ein bisschen Unsinn zu sein, oder? Lassen Sie mich Ihnen zuerst eine Antwort geben.

public class DistinctCharsCount {     public static void main(String[] args) {         printDistinctCharsWithCount("itwanger");         printDistinctCharsWithCount("chenmowanger");     }      private static void printDistinctCharsWithCount(String input) {         Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();          for (char c : input.toCharArray()) {             Integer oldValue = charsWithCountMap.get(c);              int newValue = (oldValue == null) ? 1 :                     Integer.sum(oldValue, 1);              charsWithCountMap.put(c, newValue);         }         System.out.println(charsWithCountMap);     } }
Nach dem Login kopieren

Das Ausgabeergebnis des Programms ist:

{i=1, t=1, w=1, a=1, n=1, g=1, e=1, r=1} {c=1, h=1, e=2, n=2, m=1, o=1, w=1, a=1, g=1, r=1}
Nach dem Login kopieren

Lassen Sie mich über meine Ideen sprechen:

1) Deklarieren Sie eine LinkedHashMap, oder Sie können HashMap verwenden, aber ersteres kann die Reihenfolge der Zeichenfolge nach dem Teilen beibehalten, und das Das Ergebnis sieht auf den ersten Blick klarer aus.

Warum Map verwenden? Weil der Schlüssel von Map nicht wiederholt werden darf und nur die Anzahl der wiederholten Zeichen akkumuliert werden kann.

2) Teilen Sie die Zeichenfolge in Zeichen auf und durchlaufen Sie sie.

3) Wenn der Schlüssel null ist, bedeutet dies, dass seine Zahl +1 ist; andernfalls wird +1 zum vorherigen Wert addiert und dann wieder in die Karte eingefügt, wodurch die vorherige Anzahl von Zeichen überschrieben wird.

Der Gedanke ist doch ganz klar, oder? Ich kann nicht anders, als mir selbst einen Applaus zu spenden.

Nun, nach JDK 8 hat Map eine sehr leistungsstarke Methode merge() hinzugefügt, die mehreren Schlüsseln gleichzeitig Werte zuweist:

private static void printDistinctCharsWithCountMerge(String input) {     Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();      for (char c : input.toCharArray()) {         charsWithCountMap.merge(c, 1, Integer::sum);     }     System.out.println(charsWithCountMap); }
Nach dem Login kopieren

Ist das nicht sehr leistungsfähig? Es kann in einer Codezeile durchgeführt werden. Der erste Parameter ist der Schlüssel, der zweite Parameter ist der Wert und der dritte Parameter ist eine BiFunction. Das heißt, wenn der Schlüssel bereits vorhanden ist, wird der neue Wert basierend auf der BiFunction neu berechnet.

Wenn das Zeichen zum ersten Mal erscheint, weisen Sie den Wert 1 zu, andernfalls addieren Sie den vorherigen Wert zu 1.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie verschiedene Zeichen und ihre Anzahl in einer Zeichenfolge in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage