2015-04-06 45 views
0

是否有一个数据类型或类可以让我完成这个任务,或者产生类似效果的有效方法。什么数据类型/类可以让我做到这一点?

1)到一个数组中添加项与相关的浮动框(将有一些 重复的浮动键)

2)排序,从最小到最大根据浮键的数组或抢 最低浮点键并返回这些对象。

我需要这个效率比较高,因为我会每秒重复这么多次。

+0

HashMap的数据结构和TreeMap的排序应该完成这个 – ryekayo

+0

@ryekayo HashMap不允许每个键的重复值吗?用一个简单的工作示例发布答案,以便我可以将您标记为答案。 – CodeCamper

+0

浮动键是一个麻烦的秘诀,因为他们经常会有一点点关闭。 – SLaks

回答

1

你需要的是一个Multimap,因为会有重复的键。虽然C++提供了multimap接口,但是Java SE并没有内置的接口。但是,您可以使用Google Guava库中的TreeMultimap(它曾经可以在Google Collections下使用,但是Louis Wassernman在评论中指出,它已经死了很长时间,你应该避免使用它)。该类的文档是http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/TreeMultimap.html

请记住,TreeMultimap根据提供的比较器对键和值进行排序(如果没有提供比较器,则为自然排序)。自然顺序是将地图从最小的到最大的条目排序。如果你不希望你的值也被排序,那么你会想玩一下提供的比较器。

这是对TreeMultimap本身进行一些单元测试的代码。你可以很容易地用这个作为你想要的http://google-collections.googlecode.com/svn-history/r76/trunk/test/com/google/common/collect/TreeMultimapNaturalTest.java的例子。

+1

请不要使用Google Collections;它已经死了多年和几年了。使用番石榴。 (如果你不想排序值,也可以使用'MultimapBuilder.treeKeys()。arrayListValues()。build()')。 –

相关问题