【发布时间】:2013-06-10 07:28:51
【问题描述】:
所以我对 Java 非常陌生,因此我正在努力完成一项练习,将我的一个 Python 程序转换为 Java。
我遇到了一个问题,我试图复制该行为,从 python 中,以下将只返回按值排序的键,而不是值:
popular_numbers = sorted(number_dict, key = number_dict.get, reverse = True)
在 Java 中,我进行了一些研究,但还没有为像我这样的 n00b 或类似方法找到足够简单的示例。我找到了使用 Guava 进行排序的示例,但排序似乎返回了一个按键排序的 HashMap。
除了上述之外,我在 Java 中没有发现的关于 Python 的其他优点之一是能够轻松返回已排序值的子集。在 Python 中,我可以简单地执行以下操作:
print "Top 10 Numbers: %s" % popular_numbers[:10]
在本例中,number_dict 是键值对的字典,其中键表示数字 1..100,值是数字(键)出现的次数:
for n in numbers:
if not n == '':
number_dict[n] += 1
最终结果会是这样的:
前 10 位数字:['27', '11', '5', '8', '16', '25', '1', '24', '32', '20']
澄清一下,在 Java 中我成功地创建了一个 HashMap,我成功地检查了数字并增加了键值对的值。我现在卡在排序并根据值返回前 10 个数字(键)。
【问题讨论】:
-
是否有理由使用
HashMap,特别是因为您需要排序? -
您是否考虑过使用树形图而不是哈希图?
-
@TheNewIdiot 很好,对键进行排序,而不是对值进行排序
-
“基于价值的前 10 名数字”?什么意思?