Вы можете использовать индекс для поиска вашей строки, который быстрее и проще, однако для реализации функций, которые у вас есть.
public String getNext(String uid) {
int idx = myList.indexOf(uid);
if (idx < 0 || idx+1 == myList.size()) return "";
return myList.get(idx + 1);
}
public String getPrevious(String uid) {
int idx = myList.indexOf(uid);
if (idx <= 0) return "";
return myList.get(idx - 1);
}
Использование List.get(i)
- это O(1)
, что делает сохранение индексасамый быстрый вариант.List.indexOf(String)
- это O(n)
.Использование NavigatbleSet может показаться привлекательным, поскольку оно составляет O(log n)
, однако стоимость создания объекта настолько высока, что коллекция должна быть достаточно большой, чтобы вы могли увидеть выгоду.(В этом случае вы бы использовали первый вариант)