2014-03-30 3 views
5

Я перебираю список объектов в LinkedList, ища первый, который удовлетворяет некоторому условию. После того, как я нашел, я хочу переместить его в начало списка, чтобы сократить среднее время, затраченное на поиск объектов с обычным поиском в списке.Java - Переместить объект в начало LinkedList

Psuedocode пример того, что я пытаюсь сделать:

for(Object thing:list){ 
    if(ThisIsTheObjectWeAreLookingFor(thing)){ 
     list.RemoveCurrentLinkedListNode(); 
     list.addFirst(thing); 
     return thing; 
    } 
} 

Я знаю, что я мог бы использовать удалить (Object) или удалить (индекс) методы, но это будет медленнее. Существенно, в зависимости от количества элементов в списке. (Поскольку методы должны перебирать список во второй раз.)

+0

Sounds Like http://stackoverflow.com/questions/5321463/how-to-move-the-selected-item-to- move-to-the-top-of-the-list –

+0

@RakeshKR Нет, это о любом 'List ' и, следовательно, не может использовать данные связанного списка. – delnan

ответ

8
Iterator it = list.iterator(); 
while (it.hasNext()) { 
    Object thing = it.next(); 
    if (ThisIsTheObjectWeAreLookingFor(thing)) { 
     it.remove(); 
     list.addFirst(thing); 
     return thing; 
    } 
} 
+0

Именно то, что я искал. Спасибо! – Pineapple

+0

Спасибо! работал как шарм – raevilman

Смежные вопросы