是否有一個數據類型或類可以讓我完成這個任務,或者產生類似效果的有效方法。什麼數據類型/類可以讓我做到這一點?
1)到一個數組中添加項與相關的浮動框(將有一些 重複的浮動鍵)
2)排序,從最小到最大根據浮鍵的數組或搶 最低浮點鍵並返回這些對象。
我需要這個效率比較高,因爲我會每秒重複這麼多次。
是否有一個數據類型或類可以讓我完成這個任務,或者產生類似效果的有效方法。什麼數據類型/類可以讓我做到這一點?
1)到一個數組中添加項與相關的浮動框(將有一些 重複的浮動鍵)
2)排序,從最小到最大根據浮鍵的數組或搶 最低浮點鍵並返回這些對象。
我需要這個效率比較高,因爲我會每秒重複這麼多次。
你需要的是一個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的例子。
請不要使用Google Collections;它已經死了多年和幾年了。使用番石榴。 (如果你不想排序值,也可以使用'MultimapBuilder.treeKeys()。arrayListValues()。build()')。 –
HashMap的數據結構和TreeMap的排序應該完成這個 – ryekayo
@ryekayo HashMap不允許每個鍵的重複值嗎?用一個簡單的工作示例發佈答案,以便我可以將您標記爲答案。 – CodeCamper
浮動鍵是一個麻煩的祕訣,因爲他們經常會有一點點關閉。 – SLaks