Как найти аналогичный элемент в Set с помощью двоичного поиска? - PullRequest
1 голос
/ 06 мая 2020

У меня Set<Info> info = new TreeSet<>(), и набор упорядочен в зависимости от возраста, где class Info { String name;int age}

Мне интересно, как я могу использовать двоичный поиск и найти позицию элемента, которая является самой высокой, но меньше указанной возраст. Я знаю, как это сделать в случае списка, но я не уверен в случае Set

1 Ответ

2 голосов
/ 07 мая 2020

Вместо объявления info как Set<Info>, вы можете использовать NavigableSet<Info> (как TreeSet<E> реализует NavigableSet<E>) . Затем вы можете вызвать NavigableSet#lower с указанным вами объектом Info. В документации этого метода указано:

Возвращает самый большой элемент в этом наборе, строго меньший, чем данный элемент, или null, если такого элемента нет.

Это будет выполнить внутренний двоичный поиск, который может быть более эффективным, чем линейный поиск, когда ваш NavigableSet<Info> большой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...