2013-01-07 38 views
1

我需要訪問LinkedHashMap中的內部LinkedList。我希望能夠訪問尾部和頭部。通過迭代器,我只能訪問頭部或尾部,具體取決於構造中使用的訪問順序。LinkedHashMap和訪問內部鏈接列表的方法

如何有效地訪問O(1)內部列表的頭部和尾部?

這個想法與Apache Common Collection的LinkedHashMap.asList()類似(但我想避免將Apache Commons Collections添加爲依賴項,因爲我已經擁有Guava)。

+1

我會猜測你不能。 –

+3

不,不能完成。你能解釋一下你爲什麼想要?可能有另一種方法來解決我們可以建議的問題。 –

+1

[LinkedMap](http://www.jarvana.com/jarvana/view/net/sourceforge/collections/collections-generic/4.01/collections-generic-4.01-javadoc.jar!/org/apache/commons/collections15/地圖/ LinkedMap.html)可能是最好的選擇。 Guava的ImmutableMap被排序,並返回具有atList()視圖的keySet()的ImmutableSet。所以它可以做到,但有一點間接。 –

回答

0

只能通過反射來訪問內部LinkedList。

有了反思,您可以通過使用setAccessible(true) 訪問私人會員當javas安全管理員通過反射禁用私人訪問時,這可能會失敗。

另一種解決方案是使用LinkedHashMap的開源實現,然後向內部列表中添加一個getter。