java 通过 objecs 字符串参数对具有对象值的哈希表进行排序
我有一个包含字符串 key 和一个类对象值的哈希表:
Hashtable<String,myclass>m_class_table = new Hashtable<String,myclass>();
在“myclass”内,我有一个字符串字段值,
我需要根据该字符串值对哈希表进行排序。
我不能只按哈希表值对它进行排序,因为它是一个对象..
如何做到这一点?
提前致谢。
I have an hashable that contains a string key , and a class object value:
Hashtable<String,myclass>m_class_table = new Hashtable<String,myclass>();
inside 'myclass' I have a String field value,
I need to sort my hashtable according to this string value.
I can't just sort it by the hashtable values beacuse it is an object..
How can this be done?
Thank's In Advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
哈希表不是排序的数据结构。
您可以使用一些
SortedMap
< /a>,例如TreeMap
但这些数据结构对键进行排序,因此只有当键等于所指向对象的字符串字段时才有效。
您需要提供一个
Comparator
,或者,让myclass
实现Comparable
接口。根据您迭代哈希表的方式,您也许可以这样做:
然后迭代
myObjects
列表。 (List
中的元素是有序的。)A hashtable is not a sorted data structure.
You can use some
SortedMap
, such as aTreeMap
but those data structures sorts on the keys, so that will only work if the key equals the string-field of the object pointed to.You need to provide a
Comparator<myclass>
, or, letmyclass
implement theComparable
interface.Depending on how you iterate over the hash-table, you could perhaps do like this:
and then iterate over the
myObjects
list. (Elements in aList
are ordered.)aioobe 的答案略有不同:我会创建一个 Map 条目列表并对该列表进行排序。这样您仍然可以访问完整的地图条目。
A slight variation on aioobe's answer: I'd create a List of the Map entries and sort that list. That way you still have access to the complete map entries.