我有一个带有字母数字值的HashTable
。我想排序他们。
我该如何实现它?按值(包括字母数字)排序哈希表
0
A
回答
2
HashTable
不保留该顺序。
所以最好创建一个List
出来并排序。
你需要用你的类型分为一类,然后实现一个比较所有类型的值(在你的任期)一比较,
class Foo implements Comparator<Foo>{
private int no;
private String alpha;
//+getter/setters
public int compare(Foo f1, Foo f2){
//put your logic here
}
}
0
为什么?你大概会选择HashTable而不是TreeMap,因为它具有更好的性能(并且没有排序)。如果你不想要性能,并且你想要订购,可以使用TreeMap。
0
如果你不希望创建一个新的类来保存键/值的关系和它,你不感兴趣的一个TreeMap,然后像下面也将工作:
ArrayList<Entry<String,String>> list = new ArrayList<Entry<String,String>>();
list.addAll(map.entrySet());
Collections.sort(list, new Comparator<Entry<String,String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
//your logic here;
}
});
0
第一个问题 - 你的意思是排序的价值,或者你的意思是排序的关键?
如果您只想按顺序访问排序值,最好的方法是创建列表或数组,然后进行排序。
对于值:Arrays.sort(table.values().toArray())
或Collections.sort(new ArrayList(table.values()))
对于键:Arrays.sort(table.keySet().toArray())
或Collections.sort(new ArrayList(table.keySet()))
更多关于这些排序方法:Arrays.sort()或Collections.sort()。
如果你想重复使用基于排序后的键,你会更好地使用TreeMap。
如果您反复想要基于排序后的值(而不是按键)进行访问,那么您总是可以按顺序插入LinkedHashMap,这将保持排序。
相关问题
- 1. 按值按字母顺序排列哈希映射
- 2. Perl按哈希值排序哈希
- 3. 红宝石阵列中的排序哈希按字母顺序
- 4. 如何使用“=”和“。”来排序哈希字母数字键。
- 5. 按哈希表中的值排序 - Ruby
- 6. redis.py - 按特定字段排序哈希
- 7. 如何按值排序哈希数组?
- 8. 排序字典哈希
- 9. 字母数字排序按照升序排列数值?
- 10. 按字母排序列表
- 11. 按字母排序数组?
- 12. 按字母排序数组
- 13. 按字母排序数组?
- 14. 在SQL Server排序nvarchar列其中包括字母数字
- 15. 按字母排序
- 16. 按字母顺序排序,然后按字母顺序排列
- 17. 在python中按字母排序字母表中的字母
- 18. 按价值排序2键哈希
- 19. 按唯一值排序哈希
- 20. 按值排序哈希映射
- 21. PHP按字母数字子串值排序多维数组值
- 22. 按字母顺序排序元素,然后按数字排序
- 23. 排序在Python中 - 如何排序包含字母数字值的列表?
- 24. 按字母数字排序的NSSortDescriptor
- 25. 按数字顺序排列数组列表然后按字母排序
- 26. 按数字排序记录,然后按字母排序MySQL
- 27. 排序字母数字数组列表按照升序
- 28. 基于包含字母数字值的键排序python字典
- 29. 按字母顺序排序
- 30. 按字母顺序排序
**欢迎使用StackOverflow!**请尝试使您的问题标题**尽可能短/表达**。另外,帮助他人了解**你的意思。谢谢! ;-) – 2011-05-12 11:23:05