【发布时间】:2012-02-04 07:08:47
【问题描述】:
我有一个随时间收集对象的程序。这些对象通常是程序已经接收到的对象的副本,但并不总是重复。独特对象的数量有时会达到数万。随着我的列表越来越多,需要更多时间来确定一个对象之前是否出现过。
我目前的方法是将所有内容存储在 ArrayList 中,al;使用 Collections.sort(al);并使用 Collections.binarySearch(al, key) 来确定我是否使用过一个对象。但是,每次遇到新对象时,我都必须插入和排序。
我想知道是否有更好的方法来做到这一点。包含往往会过快地减速。我正在寻找尽可能接近 O(1) 的东西。
非常感谢。
这是java。为了理解我在说什么,我基本上需要一个方法来做到这一点:
public boolean objectAlreadyUsed(Object o) {
return \\ Have we seen this object already?
}
【问题讨论】:
-
你可以只使用 HashSet 或 HashMap 而不是 ArrayList。
标签: java search sorting duplicates