使用Collections.binarySearch检索对象

时间:2011-03-02 16:47:43

标签: java collections binary-search

我声明了一个带有id, Name, age, contactNumber and Address属性的POJO类。我宣布所有的吸气者和二传手。现在我正在使用HashMap<String, POJO_CLASS>。默认情况下,我按Name属性对这些值进行排序。现在我需要通过id搜索一个对象,该方法应该返回一个对象(它作为值存储在HashMap中)。那么如何才能将Collections.binarySearch()用于此要求。

3 个答案:

答案 0 :(得分:1)

更好的问题是你为什么要这样做。 HashMap查找将非常快,O(1)时间,而二进制搜索将在具有随机访问能力的列表(ArrayList)上花费O(lg(N))时间。

如果确实想要使用二进制搜索,那么您需要将对象存储在列表中(可能是ArrayList)并对该列表进行排序,然后调用Collections.binarySearch(list, value)

答案 1 :(得分:1)

500个对象并不多,所以我只想将它们放在第二个键入id的HashMap中。

答案 2 :(得分:0)

如果您需要通过名称和ID进行快速查找,则需要将POJO永久存储在两个不同的数据结构中。在这种情况下,从id构建第二个HashMap将为您提供最佳性能。

如果地图不是那么大,或者通过id查找是相对不常见的,那么这可能是不必要的复杂。在这种情况下,我只是通过HashMap进行线性搜索。