<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=Javakurs%2F%C3%9Cbungsaufgaben%2FTextwordcount%2FMusterloesung</id>
	<title>Javakurs/Übungsaufgaben/Textwordcount/Musterloesung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=Javakurs%2F%C3%9Cbungsaufgaben%2FTextwordcount%2FMusterloesung"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Textwordcount/Musterloesung&amp;action=history"/>
	<updated>2026-05-19T07:28:25Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FreitagsrundenWiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Textwordcount/Musterloesung&amp;diff=17677&amp;oldid=prev</id>
		<title>141.23.110.8: Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Textwordcount/Musterloesung&amp;diff=17677&amp;oldid=prev"/>
		<updated>2012-03-07T13:34:07Z</updated>

		<summary type="html">&lt;p&gt;Musterlösung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Hinweis:''' Die Musterlösung kann von eurer Lösung abweichen, da es immer mehrere Varianten gibt ein Problem zu lösen. Im Zweifelsfall Fragt einen Tutor.&lt;br /&gt;
&lt;br /&gt;
== Lösung ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.Comparator;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import java.util.Map.Entry;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class TextWordCount {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		String filename = &amp;quot;&amp;lt;your file name here&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		String[] fileContent = EasyFileAccess.getFileContent(filename);&lt;br /&gt;
&lt;br /&gt;
		// Eine Hashmap speichert Schlüssel-Wert-Paare. Hier wird für jedes Wort&lt;br /&gt;
		// gespeichert, wie oft es verwendet wurde.&lt;br /&gt;
		Map&amp;lt;String, Integer&amp;gt; words = new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
		int totalWordCount = 0;&lt;br /&gt;
&lt;br /&gt;
		for (String line : fileContent) {&lt;br /&gt;
&lt;br /&gt;
			totalWordCount += line.split(&amp;quot; &amp;quot;).length;&lt;br /&gt;
&lt;br /&gt;
			for (String word : line.split(&amp;quot; &amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
				if (words.containsKey(word)) {&lt;br /&gt;
					// Das Wort ist bereits in der Hashmap enthalten, der gerade&lt;br /&gt;
					// hinterlegte Wert wird um eins erhöht und wieder in die&lt;br /&gt;
					// Hashmap geschrieben.&lt;br /&gt;
					words.put(word, words.get(word) + 1);&lt;br /&gt;
				} else {&lt;br /&gt;
					// Das Wort befindet sich noch nicht in der Hashmap und wird&lt;br /&gt;
					// neu hinzugefügt.&lt;br /&gt;
					words.put(word, 1);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Wortanzahl: &amp;quot; + totalWordCount);&lt;br /&gt;
&lt;br /&gt;
		// Um nun die am häufigsten verwendeten Wörter zu ermitteln, muss etwas&lt;br /&gt;
		// getrickst werden. Klar ist, dass nach der Verwendungsanzahl&lt;br /&gt;
		// absteigend sortiert werden muss. Dies lässt sich mit einer Hashmap&lt;br /&gt;
		// allerdings nicht realisieren, da die Schlüssel-Wert-Paare unsortiert&lt;br /&gt;
		// gespeichert werden.&lt;br /&gt;
		// Deswegen wird an dieser Stelle eine Liste von Schlüssel-Wert-Paaren&lt;br /&gt;
		// angelegt, die im nächsten Schritt sortiert wird.&lt;br /&gt;
&lt;br /&gt;
		List&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt; sortedList = new ArrayList&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt;(&lt;br /&gt;
				words.entrySet());&lt;br /&gt;
&lt;br /&gt;
		// Sortiert wird mit einer Hilfsmethode aus der API. Dieser Methode kann ein &amp;quot;Comparator&amp;quot; übergeben werden, der zwei Objekte aus der Liste vergleicht.&lt;br /&gt;
		&lt;br /&gt;
		Collections.sort(sortedList, new Comparator&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt;() {&lt;br /&gt;
			@Override&lt;br /&gt;
			public int compare(Entry&amp;lt;String, Integer&amp;gt; o1,&lt;br /&gt;
					Entry&amp;lt;String, Integer&amp;gt; o2) {&lt;br /&gt;
				//Negatives Vorzeichen deswegen, da absteigend sortiert werden soll.&lt;br /&gt;
				return -o1.getValue().compareTo(o2.getValue());&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Am häufigsten verwendete Wörter: &amp;quot;);&lt;br /&gt;
		//Math.min für den Fall, dass weniger als 20 unterschiedliche Wörter verwendet wurden.&lt;br /&gt;
		for (int i = 0; i &amp;lt; Math.min(20, sortedList.size()); i++) {&lt;br /&gt;
			Entry&amp;lt;String, Integer&amp;gt; entry = sortedList.get(i);&lt;br /&gt;
			System.out.println(entry.getKey() + &amp;quot; (&amp;quot; + entry.getValue()&lt;br /&gt;
					+ &amp;quot; mal)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Insgesamt wurden &amp;quot; + words.size()&lt;br /&gt;
				+ &amp;quot; unterschiedliche Wörter verwendet.&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>141.23.110.8</name></author>
		
	</entry>
</feed>