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

按元素频率顺序遍历Multiset的最简单方法?

施刚毅
2023-03-14
问题内容

考虑该示例,该示例输出一些设备类型统计信息。(“ DeviceType”是一个带有十几个值的枚举。)

Multiset<DeviceType> histogram = getDeviceStats();
for (DeviceType type : histogram.elementSet()) {
    System.out.println(type + ": " + histogram.count(type));
}

什么是最简单,最优雅的方式按不同 的频率 打印不同的元素(最常见的类型在前)?

随着快速浏览一下Multiset界面,有一个为这个没有现成的方法,并没有番石榴的的Multiset实现(HashMultisetTreeMultiset,等)似乎自动保持要素频率有序无论是。


问题答案:

我刚刚将此功能添加到了Guava,有关Javadoc
,请参见此处。

编辑Multisets.copyHighestCountFirst()根据原始问题的用法示例:

Multiset<DeviceType> histogram = getDeviceStats();
for (DeviceType type : Multisets.copyHighestCountFirst(histogram).elementSet()) {
    System.out.println(type + ": " + histogram.count(type));
}


 类似资料:
  • 问题内容: 我创建了一个队列,其中包含一些对象,这些对象要按照它们在队列中的放置顺序进行迭代(第一个对象放在队列中,第二个对象放在队列中,第三个对象…) 我看到了一种在线执行此操作的方法,但不确定是否可以确保以正确的顺序访问队列中的对象? 谢谢您的帮助。 问题答案: 这取决于您使用哪种实现。 例如,保证迭代将以FIFO(插入)顺序返回元素。这是因为它实现了接口。 但是一般来说,其他类型的队列不一定

  • 对于元素间的空格,IE9 及之前版本不会返回文本节点,而其他所有浏览器都会返回文本节点。这样,就导致了在使用childNodes 和firstChild 等属性时的行为不一致。为了弥补这一差异,而同时又保持DOM规范不变,Element Traversal 规范(www.w3.org/TR/ElementTraversal/)新定义了一组属性。 Element Traversal API 为DOM

  • 问题内容: 我创建了一种方法来解组xml(item.xml)文件。但是,如果有多个元素,如何遍历所有元素并使它们显示? 我的代码如下: 如果我的xml是 如何获取所有显示的值?谁能帮我? 问题答案: 我在大学的一些项目中使用过JAXB。据我所记得,您应该返回一个对象(例如),然后查询该对象以检索其中包含的元素。 因此,您的xml应该如下所示: 此时,您的 Java 代码将是:

  • 问题内容: 请看下面我的地图 我正在按钥匙的大小顺序遍历此地图 但是,这打印出来 有没有一种方法可以按键的大小顺序打印出来,所以,我想像这样遍历这张地图 等等… 非常感谢您的帮助! 问题答案: 收集所有键,对它们进行排序,然后按键迭代地图,如下所示:

  • 我想在级别顺序遍历中打印出BST。但是我以这种奇怪的方式得到了输出。此外,我使用Java可视化工具来检查我的算法,没有线索,因为可视化工具没有说明多个实例。我在想,要么我的变量没有正确地添加到我的实例中,要么没有添加到

  • 问题内容: 我已经用BeautifulSoup做到了,但是有点麻烦,我想弄清楚是否可以直接用Selenium做到。 假设我有以下HTML,这些HTML在页面源中使用相同的元素但内容不同重复多次: 我需要建立一个字典,每个人的条目如下: 通过执行以下操作,我可以轻松地让Selenium生成每个顶级元素的内容列表: 但是,我无法遍历列表,因为上述方法无法将范围/源范围缩小到该元素的内容。 如果我尝试执