我正在尝试对字符列表进行排序,并按照频率顺序和相关频率输出它们。例如,如果用户将在 “beeeerr”,我希望它出来把 “E频率:4,R频率:2,B频率:1”Java:使用数组按频率对字符列表进行排序
这是我到目前为止有:
public static void sort(String charInput) {
int frequency = 0;
char [] charArray = charInput.toCharArray();
for (char charValue = ' '; charValue <= '~'; charValue++) {
frequency = 0;
for (int i = 0; i < charInput.length(); i++) {
char compare = charArray[i];
//charInput.charAt(i)
if (compare == charValue) {
frequency += 1;
}
}
if (frequency > 0) {
System.out.println(charValue + " freq: " + frequency);
}
}
}
问题在于它按字母顺序输出频率。我无法弄清楚如何按输出频率对输出进行排序。我知道如何用Hashmaps或Arraylists轻松做到这一点,但我不能使用它们。任何帮助,将不胜感激
的Java使用Unicode。这个问题从''到'〜'有一系列的兴趣。您引用的128个字符是[C0控件和基本拉丁语](http://www.unicode.org/charts/nameslist/index.html)块,256将添加C1控件和拉丁-1补充块。提起ASCII会引起混淆,而扩展的ASCII-就是如此不精确以至于几乎没有用处。在Unicode的情况下,您必须指定ISO 8859-1。与[Java文档](https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html)所描述的一样,处理字符串,字符和字符不是很容易吗? –
感谢您的纠正。对于这个问题,您可以将128更改为unicode集中的字符数。 – taobupt