2015-05-24 74 views

回答

2

這可能嗎?

答案是它取決於你需要的列表功能。

  • 如果你只是想在「名單」上執行類似數組的操作(如獲取或定索引處設置元素),那麼就可以做到的。

  • 如果您想要執行諸如插入或刪除元素或按順序迭代列表元素等操作,那麼操作必須被阻止,並且通常會很昂貴。

爲了說明,考慮在位置P處插入元素的問題。爲此,您需要更改所有現有元素在P及之後的位置。對於每一個,你需要從哈希映射中刪除元素,然後重新插入它。假設P是隨機選擇的,則重新編號爲O(N),其中N是「列表」長度。此外,重編號必須以原子方式完成,因此必須在相當長的時間內阻止其他操作。

1

當然可以。 javadoc提供了有關如何使用它的信息。
1.操作是線程安全的:HashMap中被阻斷,執行操作,HashMap的暢通等等
2.吸氣不阻止:它檢索最新的更新
3.你可以擴展你的HashMap蒙山此function
4.用put(鍵,值)添加元素;
5.您正在尋找

ConcurrentHashMap<Integer,String> map = new ConcurrentHashMap<Integer,String>(); //Creates a new, empty map with a default 
            // initial capacity (16), load factor (0.75) and concurrencyLevel (16). 
    map.put(map.size(),"Hello"); //put is blocking so you'll have the actual size (your index) at insertion time 
0

沒有,因爲沒有辦法原子刪除元素。

您可以實現代碼以將後續元素向下移動,但這需要一些額外的編碼。