江户川乱折腾
Map适合根据出现次数获取字符的情况。Map只是将数据存储在键值对中的结构。有关详细信息,请参见此处。因此,要获取字符及其在没有 java8 的情况下出现的次数,您可以这样做:public Map<Character, Long> countChar(String string) { Map<Character, Long> result = new LinkedHashMap<>(); char[] chars = string.toCharArray(); for (char c : chars) { if (result.get(c) != null) { result.put(c, result.get(c) + 1); } else { result.put(c, 1L); } } return result;}接下来,您要按出现次数对值进行排序。在这种情况下,您可以按值对结果映射进行排序。请参阅Sort a Map<Key, Value> by values以找到您更熟悉的解决方案。要在没有流的情况下执行此操作,但使用 java8:List<Map.Entry<Character, Long>> list = new ArrayList<>(result.entrySet());list.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));现在您可以像这样打印每个字符:StringBuilder output = new StringBuilder();for (Map.Entry<Character, Long> entry : list) { output.append(entry.getKey());}System.out.println(output);