我有一个包含字符串键和类对象值的可哈希对象:
Hashtable<String,myclass>m_class_table = new Hashtable<String,myclass>();
在“myclass”中我有一个字符串字段值,
我需要根据这个字符串值对哈希表进行排序。
我不能只按哈希表值对它进行排序,因为它是一个对象..
如何做到这一点?
提前致谢。
最佳答案
I need to sort my hashtable according to this string value.
哈希表不是排序的数据结构。
您可以使用一些 SortedMap
,例如 TreeMap
但是这些数据结构根据键进行排序,因此只有当键等于指向的对象的字符串字段时才会起作用。
I can't just sort it by the hashtable values beacuse it is an object..
您需要提供一个 Comparator<myclass>
, 或者, 让 myclass
实现 Comparable
界面。
根据你如何遍历哈希表,你也许可以这样做:
List<myclass> myObjects = new ArrayList<myclass>(m_class_table.values());
Collections.sort(myObjects, new Comparator<myclass>() {
@Override
public int compare(myclass o1, myclass o2) {
o1.stringField.compareTo(o2.stringField);
}
});
然后遍历 myObjects
列表。 (List
中的元素是有序的。)
关于java通过objecs字符串参数对具有对象值的哈希表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122105/