ok, stimmt. Aber value ist ne zahl, und die sind auch ComparableSamHotte hat gesagt.:Er will aber nach value sortieren ...
List<Character> sortedList = new ArrayList<Character>();
sortedList.addAll(letterMap.keySet());
Collections.sort(sortedList); [B]//hier muss der Comparator mitübergeben werden oder?[/B]
Iterator<Character> iter = sortedList.iterator();
while (iter.hasNext()) {
Character key = iter.next();
System.out.println(key + " : " + letterMap.get(key));
}
// initialisieren
int[] powers = new int[26]; // a-z
for(int i = 0; i<powers.length; i++){
powers[i] = 0;
}
// zählen
for(char c : readNextCharFromYourSource()){
int cast = c-97; // 97 = 'a', 98 = 'b' usw. siehe ASCII-Tabelle
powers[cast]++;
}
// ausgeben
for(int i = 0;i<powers.length;i++){
char c = i+97;
System.out.println(c+" : "+powers[i]+" mal");
}
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class TextCoder {
/**
* Wandelt die Buchstaben des eingelesenen Strings (Texts) in Kleinbuchstaben um
* und liest die Buchstaben von a-z in eine Map ein.
* 97 (=a) und 122 (=z) oder zwischen 65 (=A) und 90 (=Z)
*/
public Map<Character, Integer> count(String text) {
Map<Character, Integer> letterMap = new HashMap<Character, Integer>();
text.toLowerCase();
// Buchstaben von a-z in die Map einlesen
for(int i=0;i < text.length();i++) {
if( Character.isLetter(text.charAt(i)) ) {
char aktChar = text.charAt(i);
if(letterMap.containsKey(aktChar) == true) {
int tmp = letterMap.get(aktChar);
letterMap.put(aktChar, ++tmp);
}
else{
letterMap.put(aktChar, 1);
}
}
}
return letterMap;
}
public Map<Character, Integer> sort(String text) {
Map<Character, Integer> letterMap = count(text);
Map<Character, Integer> newMap = new HashMap<Character, Integer>();
int size = letterMap.size();
char currKey = 'a';
while(newMap.size() <= size) {
for(int i=97;i<=122; i++) {
if(letterMap.containsKey(currKey) == false) {
currKey++;
}
else if(letterMap.containsKey((char)i) == false) {
i++;
}
else if(letterMap.get((char)i) > letterMap.get((char)currKey)) {
currKey = (char)i;
}
}
newMap.put((char)currKey, letterMap.get((char)currKey) );
System.out.println(currKey + " : " + newMap.get((char)currKey));
letterMap.remove((char)currKey);
}
return newMap;
}
public static void main(String[] args) {
TextCoder tc = new TextCoder();
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader("cryptedText.txt"));
String zeile = null;
while ((zeile = br.readLine()) != null) {
sb.append(zeile + "\n");
}
System.out.println("Text wurde erfolgreich eingelesen.\n");
} catch (IOException e) {
e.printStackTrace();
}
String text = sb.toString();
tc.sort(text);
}
}