如何按字母顺序对哈希表元素进行排序?比如我的元素是:
cijfercode, Zweeds, Doorloper, Kruizword, Crypto, Woordzoker
编辑:我还得到了对哈希表元素进行排序的解决方案。这是解决方案:
java.util.Vector vec = new java.util.Vector(hashtableList.keySet());
Collections.sort(vec);
最佳答案
如果这些“元素”是键,您可以将它们存储在 TreeMap
中,这将根据键的自然顺序生成一致的顺序。请注意,除了使用传递给构造函数的旧 map 创建新 map 外,您不需要做太多事情:
Map<String,?> map = ?
Map<String,?> orderedMap = new TreeMap<String,?>(map);
然后,像往常一样迭代:
for(String key : orderedMap.keys()){
}
如果您的“元素”是值,那么您可以将它们作为键插入到 TreeMap
中跟踪原始键,像以前一样读取值的排序顺序(基本上创建倒排索引):
Map<?,String> map = ?
Map<String,List<?>> orderedVals = new TreeMap<String,List<?>>();
for(Entry<?,String> map : map.entrySet()){
List<?> keys = orderedVals.get(map.getValue());
if(keys == null){
keys = new ArrayList<?>();
orderedVals.put(map.getValue(), keys);
}
keys.add(map.getKey());
}
// now orderedVals has keys in sorted order
for(String val : orderedVals.keys()){
}
当然,如果你实际上没有使用任何与这些东西在“哈希表”中的事实相关的东西(我把它理解为实现 Map
的东西),那么你可以加载 List
你选择的,然后排序:
List<String> list = new ArrayList<String>(map.values()); // or use map.keys()
Collections.sort(list);
如果您对 String
的默认排序顺序不满意,随意编写自己的比较器:
Collections.sort(list, new Comparator<String>(){
public int compare(String left, String right){
return // your impl
}
});
compare
left
时必须返回一个负整数首先出现,如果 left
则为 0和 right
相同,如果 right
则为正整数先来。
关于java - 如何按字母顺序对哈希表中的元素进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853965/