说我有一个带有键的哈希表
{Sean, Michael, John, Alan, Zach}
现在我想按以下方式对这些键进行排序
{John, Alan, Michael, Zach, Sean}
上面的名称仅是示例。 我知道我们可以使用TreeSort进行排序。 但是,它仅给出升序或降序排序。 但是我上面的要求没有任何特定的排序方式,但是需要如上所述。 我该如何实现? 请帮助我。
说我有一个带有键的哈希表
{Sean, Michael, John, Alan, Zach}
现在我想按以下方式对这些键进行排序
{John, Alan, Michael, Zach, Sean}
上面的名称仅是示例。 我知道我们可以使用TreeSort进行排序。 但是,它仅给出升序或降序排序。 但是我上面的要求没有任何特定的排序方式,但是需要如上所述。 我该如何实现? 请帮助我。
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;
}