假设我有一个带键的哈希映射
{Sean, Michael, John, Alan, Zach}
现在我想对这些键进行排序,如下所示
{John, Alan, Michael, Zach, Sean}
以上名称只是示例。我知道我们可以使用TreeSort进行排序。但是它只提供升序或降序。但我上面的要求没有任何具体的排序方法,但需要如上所述。我如何实现这一目标?请帮帮我。
答案 0 :(得分:3)
在String周围使用带有java bean包装的自定义Comparator,比如一个Integer?
答案 1 :(得分:3)
hd1的自定义Comparator解决方案是执行此操作的典型方法。如果您只想保留特定的顺序,则可以始终使用LinkedHashMap
,只需按顺序插入条目。
Map接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表。此链接列表定义迭代排序,通常是键插入映射的顺序(插入顺序)。
要生成一个条目,其中条目位于source
,而密钥迭代顺序由keysInOrder
指定,您可以执行以下操作:
public static <K, V>
Map<K, V> mapWithKeysInOrder(
Map<K, V> source, Iterable<? extends K> keysInOrder) {
Map<K, V> output = new LinkedHashMap<K, V>(source.size());
for (K key : keysInOrder) {
output.put(key, source.get(key);
}
return output;
}