为自定义要求排序hashmap键

时间:2013-04-16 01:33:29

标签: java

假设我有一个带键的哈希映射

{Sean, Michael, John, Alan, Zach}

现在我想对这些键进行排序,如下所示

{John, Alan, Michael, Zach, Sean}

以上名称只是示例。我知道我们可以使用TreeSort进行排序。但是它只提供升序或降序。但我上面的要求没有任何具体的排序方法,但需要如上所述。我如何实现这一目标?请帮帮我。

2 个答案:

答案 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;
}