У меня есть список строк, и мне нужно убедиться, что один конкретный элемент всегда находится в списке в списке. Вот иллюстрация. Предполагая, что мой список содержит [действие sicav, droits de souscription, action famille, действия fcp]. Я должен убедиться, что действие «famille» всегда находится на первой позиции, прежде чем произойдет дальнейшая обработка списка.Ограничение элемента списка, который должен быть сверху
Вот как я это сделал:
/**
* Force this list to alway keep the constrained value on top
* @param liste
* @param constraint
*/
public void doConstrainList(List<String> liste, String constraint) {
System.out.println("List initial state: " + liste);
if (!liste.contains(constraint)) {
return;
}
int indexToProcess = liste.indexOf(constraint);
String keeper = constraint;
liste.remove(indexToProcess);
liste.add(0, keeper);
System.out.println("List state after processing:" + liste);
}
Когда я называю этот метод с примером списка упоминалось выше, для того же значения ограничений я получаем следующий результат
Так что это работает, как ожидалось, но я хотел бы знать, есть ли лучший способ сделать это. Похоже, что список будет продолжать расти в размерах, и я бы не хотел, чтобы этот метод был временем. Я использую Java 1.6, и я не могу использовать более новую версию Java. Спасибо за любую помощь
Может быть, список не является наиболее эффективной структуры данных для использования. Не можете ли вы создать собственный класс, содержащий первый элемент отдельно, а остальные в списке? Этот класс может даже реализовать интерфейс списка, поэтому для него он будет просто списком, но внутренне он может поддерживать это ограничение. –
@tobias_k. Спасибо, я изучу этот вариант. Для получения дополнительной информации Список приходит из службы, и эта служба получает его из хранилища данных Spring. Я получаю его в контроллере весны mvc. Вот когда я должен применить это ограничение перед отправкой списка в представление как атрибут модели. – alainlompo
попробуйте priorityQueue вместо этого? –