我有一个程序,它获取字符串中字符的实例数,然后将它们放入 HashMap 中。我已经可以工作了,但是我如何按字母顺序排列 HashMap。这是我的代码:
import java.util.*;
import java.lang.*;
import javax.swing.JOptionPane;
import java.io.*;
public class CharacterCount
{
public static void main(String args[])
{
{
String s = JOptionPane.showInputDialog("Enter in any text.");
String str = s.replaceAll("[., ]", "");
String[] splitted = str.split("");
HashMap hm = new HashMap();
for (int i = 0; i < splitted.length; i++) {
if (!hm.containsKey(splitted[i])) {
hm.put(splitted[i], 1);
} else {
hm.put(splitted[i], (Integer) hm.get(splitted[i]) + 1);
}
}
for (Object word : hm.keySet()) {
if (word.equals("")) {
System.out.println("Spaces: " + (Integer) hm.get(word));
}
else {
System.out.println(word + ": " + (Integer) hm.get(word));
}
}
}
}
}
我需要添加什么才能使其按字母顺序排列/重新组织 HashMap?
最佳答案
安HashMap
默认情况下是未排序的。这是因为它的实现不能依赖于元素的顺序。
如果您需要排序的 map ,那么您将不得不查看 TreeMap
它提供与 HashMap
相同的接口(interface)但它本质上是根据键的自然顺序(或自定义 Comparator
)进行排序的。请注意TreeMap
不允许对值进行排序,因此如果您需要按值对数据进行排序,那么您将必须构建自己的排序集合。
这通常是通过获取 Map.Entry<K,V> entrySet()
来完成的然后建立一个新的SortedSet
遵循您的订购规则。
关于java - 按字母顺序排列字符的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875578/