簡體   English   中英

具有set()方法和O(1)Contains()的Java數據結構

[英]Java data structure with a set() method and O(1) Contains()

Java中是否存在可以在特定索引處替換項目的有序數據結構,並且還具有O(1)時間復雜度的contains方法?

LinkedHashSet幾乎是我要尋找的東西,但是您不能使用它們在索引處設置/替換項目。

不在標准Java類中。 您可以很容易地創建一個由HashSetArrayList組成的類。

您可以使用將項目存儲在ArrayList並使用HashMap<ItemType, Integer>從元素類型映射到List中等效類中的元素數,從而允許使用List訪問元素並測試是否通過使用包含一個項目

Integer i = map.get(object);
boolean contained = ( i != null ) && ( i > 0 );

更新地圖以添加元素:

map.merge(object, 1, Integer::sum);

刪除元素:

map.computeIfPresent(object, (k, v) -> v > 1 ? v - 1 : null);

如果列表中替換了某個項目,則可以按以下方式處理

map.merge(newValue, 1, Integer::sum);
map.computeIfPresent(oldValue, (k, v) -> v > 1 ? v - 1 : null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM