Frage Java - Objekt vor die LinkedList verschieben


Ich durchlaufe eine Liste von Objekten in einer LinkedList und suche nach der ersten, die eine Bedingung erfüllt. Einmal gefunden, möchte ich es an den Anfang der Liste verschieben, um die durchschnittliche Zeit zu reduzieren, die für die Suche nach häufig gesuchten Objekten in der Liste benötigt wird.

Pusedocode Beispiel von dem, was ich versuche zu tun:

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

Ich weiß, ich könnte die Methoden remove (Object) oder remove (index) verwenden, aber das wäre langsamer. Im Wesentlichen so, abhängig von der Anzahl der Elemente in der Liste. (Da die Methoden ein zweites Mal durch die Liste iterieren müssten.)


5
2018-03-30 19:47


Ursprung


Antworten:


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

9
2018-03-30 19:53