Я хотел бы реализовать быстрый поиск по ArrayList объектов. Эти объекты состоят из int oldId, int newId и int inList, наряду с другими вещами.
Теперь я попытался реализовать бинарный поиск с использованием Collections.binarySearch в моем списке, но проблема в том, что мне нужно искать, используя oldId и inList, чтобы получить newId из соответствующего объекта. Пример: у меня oldId = 9 и inList = 1, и я пытаюсь получить newId, который был назначен где-то еще. По существу сопоставил oldId-newId и сгруппировал их. Там могут быть дубликаты старых идентификаторов, но они должны быть в разных списках и иметь уникальные новые идентификаторы.
Как вы думаете, было бы лучше использовать hashmap для этих объектов карты? Или же, есть ли решение (может быть, компаратор для объектов), чтобы получить newId из информации oldId и inList. Я также ищу быстрый алгоритм поиска.
Большое спасибо за помощь, я ценю идеи.
Вот компаратор, который я написал для бинарного поиска, однако я не мог понять, как добавить сюда информацию 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;
}
}