我想在对象的 ArrayList 上实现快速搜索。这些对象由 int oldId、int newId 和 int inList 以及其他内容组成。
现在,我尝试使用列表中的 Collections.binarySearch 实现二进制搜索,但问题是我需要使用 oldId 和 inList 进行搜索,以从相应的对象中获取 newId。示例:我有 oldId = 9 和 inList = 1,并尝试获取已分配到其他地方的 newId。基本上映射了 oldId-newId 并将它们分组。可能有重复的 oldId,但它们必须位于不同的列表中,并且具有唯一的 newId。
您认为对这些地图对象使用哈希图会更好吗?或者,是否有解决方案(可能是对象的比较器)从 oldId 和 inList 信息中获取 newId。我也在寻找一种快速搜索算法。
非常感谢您的帮助,我很感激想法。
这是我为二进制搜索编写的比较器,但是我不知道如何在此处添加 inList 信息。
public class CompareTermId implements Comparator
<MObj>
{
public CompareTermId(){}
public int compare(MObj a, MObj b){
if(a.oldTermId < b.oldTermId) return 1;
else if(a.oldTermId > b.oldTermId) return -1;
else return 0;
}
}