我需要一个Java数据结构,可以高效地添加、删除和访问随机对象。
以下是不起作用的方法:
ArrayList有高效的添加(常数时间)和随机访问(只需使用随机整数的“get”),但删除可能需要线性时间,因为它必须潜在地搜索整个列表。
TreeSet或HashSet具有高效的添加和删除,但我无法弄清楚如何获取随机对象。
有什么想法吗?
理论上,如果我能自己遍历树并随机选择左右节点,那么B树将起作用,但我不认为标准的Java类库能够给我这种能力。
如果标准Java类中没有适合的,我愿意使用第三方库。
我不需要支持重复项或null,并且它不需要是线程安全的。
谢谢。
以下是不起作用的方法:
ArrayList有高效的添加(常数时间)和随机访问(只需使用随机整数的“get”),但删除可能需要线性时间,因为它必须潜在地搜索整个列表。
TreeSet或HashSet具有高效的添加和删除,但我无法弄清楚如何获取随机对象。
有什么想法吗?
理论上,如果我能自己遍历树并随机选择左右节点,那么B树将起作用,但我不认为标准的Java类库能够给我这种能力。
如果标准Java类中没有适合的,我愿意使用第三方库。
我不需要支持重复项或null,并且它不需要是线程安全的。
谢谢。
ArrayList.remove(int index)
运行时间为摊销常数时间。据我所知,这意味着单个调用是线性时间,但在一系列调用中的平均时间趋近于常数时间。 - Aarowaim