2014-03-30 33 views
5

我遍历LinkedList中的对象列表,搜索满足某些条件的第一个对象。一旦找到,我想将它移动到列表的前面,以减少在列表中搜索常用搜索对象的平均时间。什么,我试图做Java - 将对象移动到LinkedList前

伪代码示例:

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

我知道我可以使用删除(对象)或删除(指数)的方法,但是这将是慢。基本上这取决于列表中元素的数量。 (因为这些方法必须第二次遍历列表)。

+0

声音像http://stackoverflow.com/questions/5321463/how-to-move-the-selected-item-to-移到列表顶部 –

+0

@RakeshKR不,这是关于任何“列表”,因此不能利用链表详细信息。 – 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