0

假设我有一个带键的哈希图

{Sean, Michael, John, Alan, Zach}

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

{John, Alan, Michael, Zach, Sean}

上面的名字只是例子。我知道我们可以使用 TreeSort 进行排序。但是它只提供升序或降序排序。但是我上面的要求并没有具体的排序方式,但需要如上所述。我该如何做到这一点?请帮助我。

4

2 回答 2

3

在字符串周围使用带有 java bean 包装器的自定义比较器,比如 Integer?

于 2013-04-16T01:37:09.587 回答
3

hd1 的自定义比较器解决方案是执行此操作的典型方法。但是,如果您只想保留特定的顺序,则始终可以使用 aLinkedHashMap并按该顺序插入条目。

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;
}
于 2013-04-16T01:42:37.603 回答