假设我有一个带键的哈希图
{Sean, Michael, John, Alan, Zach}
现在我想对这些键进行如下排序
{John, Alan, Michael, Zach, Sean}
上面的名字只是例子。我知道我们可以使用 TreeSort 进行排序。但是它只提供升序或降序排序。但是我上面的要求并没有具体的排序方式,但需要如上所述。我该如何做到这一点?请帮助我。
假设我有一个带键的哈希图
{Sean, Michael, John, Alan, Zach}
现在我想对这些键进行如下排序
{John, Alan, Michael, Zach, Sean}
上面的名字只是例子。我知道我们可以使用 TreeSort 进行排序。但是它只提供升序或降序排序。但是我上面的要求并没有具体的排序方式,但需要如上所述。我该如何做到这一点?请帮助我。
在字符串周围使用带有 java bean 包装器的自定义比较器,比如 Integer?
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;
}