当前位置: 首页 > 面试题库 >

可以按值顺序迭代的映射

赫连冠玉
2023-03-14
问题内容

我需要一个Map,它可以 按其值 的降序进行迭代。是否有像Apache Commons或Guava这样的标准库提供这种地图?


问题答案:

我会用番石榴来做到这一点,如下所示:

Ordering<Map.Entry<Key, Value>> entryOrdering = Ordering.from(valueComparator)
  .onResultOf(new Function<Entry<Key, Value>, Value>() {
    public Value apply(Entry<Key, Value> entry) {
      return entry.getValue();
    }
  }).reverse();
// Desired entries in desired order.  Put them in an ImmutableMap in this order.
ImmutableMap.Builder<Key, Value> builder = ImmutableMap.builder();
for (Entry<Key, Value> entry : 
    entryOrdering.sortedCopy(map.entrySet())) {
  builder.put(entry.getKey(), entry.getValue());
}
return builder.build();
// ImmutableMap iterates over the entries in the desired order


 类似资料:
  • 问题内容: 我有一个HashMap,每次我获得迭代器时,我都希望以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前对地图进行“混洗”(或者,如果需要,可以对迭代器进行“混洗”)。 我有两种选择: 1)使用LinkedHashMap的方法,并在内部保留条目列表,将其随机洗净,并在调用迭代器时返回该视图。 2)使用map.entrySet(),构造一个ArrayList并在其上使用sh

  • 当使用Angular keyvalue管道遍历对象的属性时,如下所示: 我遇到过一个问题,即属性没有按照预期的顺序迭代。这条评论表明,我不是唯一一个经历过这个问题的人: 如何在Angular中使用ngFor循环对象属性

  • 我发现了这个关于使用限定符进行可迭代到不可迭代映射的示例: 但是,如果我想从emails集合的第一个元素中提取一个特定的字段,例如,就像我处理code一样? 例如,我希望编写如下的映射:

  • 问题内容: 我担心给出的文件和目录的顺序。如果我有这些目录,,,,,,,,,,,,,什么是输出列表的顺序? 它是按数值排序的吗? 或按ASCII值排序,如? 此外,如何获得特定的排序? 问题答案: 用途。这是的文档字符串: listdir(路径)-> list_of_strings 返回一个列表,其中包含目录中条目的名称。 该列表按任意顺序排列 。它不包括特殊条目“。” 和“ ..”,即使它们存在

  • 问题内容: 好的,我认为这可能是一个老问题,但是我在stackoverflow上没有发现任何东西。在go中,不保证地图上的迭代顺序是可重现的。因此,建议的方法是将键保留在一个切片中并对该切片进行排序。然后,对该切片进行迭代以从映射中检索值,以便我们按顺序获取它们(因为由键组成的切片已排序,因此将以可再现的顺序排列)。因此,这意味着需要对切片进行排序,否则切片上的迭代也不会给出可重现的顺序。但是,当

  • 我有一个Linkedhasmap并有键和值 现在我想按值对映射进行排序,键和值应该如下所示 请告知