昨晚我偶然發現了一個百靈的multi_index,同時敲響了我需要通過3個不同鍵值訪問的集合,並且還重新平衡了數組語義。那麼我在boost :: multi_index中得到了我的兩個願望之一(3個不同的鍵值)。Java是否有相當於boost :: multi_index的地方?
我很好奇,如果在Java世界中存在任何類似的東西。
昨晚我偶然發現了一個百靈的multi_index,同時敲響了我需要通過3個不同鍵值訪問的集合,並且還重新平衡了數組語義。那麼我在boost :: multi_index中得到了我的兩個願望之一(3個不同的鍵值)。Java是否有相當於boost :: multi_index的地方?
我很好奇,如果在Java世界中存在任何類似的東西。
我不知道是什麼的boost :: multi_index手段,而是根據你的問題的其餘部分,我想你可能會談論一個multi key map
不,對不起。這是一個弱類型複合密鑰容器的例子。 boost :: multi_index是強類型的,但更重要的是它有多個獨立的鍵。即在multi_index_container中,您可以按名稱,SSN或出生日期查找人員。 (顯然名字和DOB不會是唯一的鍵) – MSalters 2010-09-02 11:42:12
我認爲簡單的答案是否定的,沒有明顯的等價物。
boost多索引類的模板非常嚴重,這在Java中不容易翻譯。有泛型,但它們並不完全相同。 (How are Java generics different from C++ templates? Why can't I use int as a parameter?)。
因此,如果沒有模板,那麼多指標類會是什麼樣子?
我想你會有你的數據類,例如Person,包含像Map實現一樣的索引成員。在這一點上,你有一個選擇:
我認爲,在大多數情況下1)最容易編寫,最容易維護,可能是最高性能的。 2)看起來像過度工程。
另一種選擇,如果你有很多需要建立索引的數據結構,就是將它們存儲在數據庫中。
我發佈了新的答案,談論谷歌番石榴。這可能是一個解決方案 – gavioto 2015-01-22 11:21:44
我剛剛完成Java中的MultiIndexContainer:http://code.google.com/p/multiindexcontainer/wiki/MainPage。 我知道它並不完全等同於boost multi_index_container,但也許它可能足以滿足您的要求。
謝謝,我會看看。 – 2011-03-23 13:19:08
界面看起來不錯,實際上解決了多索引的要求。 – Alex 2017-05-25 08:19:08
哇,也許時間過了很長一段時間後,我的舊項目復活:-)順便說一句我已經將它導出到github https://github.com/Kamosh/multiindexcontainer,但很難說它是什麼形狀。 – 2017-05-26 09:44:14
復活一個老問題,但看看CQEngine作爲解決方案。
有關背景也看到相關的問題How do you query object collections in Java (Criteria/SQL-like)?
我認爲你可以找到在谷歌番石榴庫中的答案。可能multimaps解決您的需求。
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained
正如這些線程評論:
'multi_index'意思是你可以在內部放置一個有多個鍵的值並且每個鍵都有一個分組。設想一下像文件的地圖,一旦按名稱鍵入並且一旦鍵被擴展名等等。 – Alex 2017-05-24 15:24:29
可能矯枉過正(因此評論),你認爲是一個嵌入式數據庫的呢?有很多輕量級的數據庫,你可以嵌入和運行在內存中,我想這取決於你的性能要求.... – Nim 2013-05-20 09:51:13