Java-Liste : Holen Sie sich die nächsten oder vorherigen element aus einem Bezeichner
Möchte ich navigieren in einer Liste von Bezeichner.
1 - ich verwalten/erstellen Sie eine Liste.
2 - ich erstellen-Funktion zum nächsten Element mit einem identifier-element von meiner Liste
Können Sie mir helfen um diesen code beheben?
Vorbereitung der Liste
List<String> myList = new ArrayList<String>();
myList.add("1");
myList.add("2");
myList.add("3");
myList.add("4");
myList.add("5");
public String function getNext(String uid) {
if (myList.indexOf(uid).hasNext()) {
return myList.indexOf(uid).nextElement();
}
return "";
}
public String function getPrevious(String uid) {
return myList.indexOf(uid).hasPrevious() ? myList.indexOf(uid).previousElement() : "";
}
InformationsquelleAutor BasicCoder | 2011-06-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie einen index verwenden, um nachschlagen Ihr String ist schneller und einfacher, aber die Funktionen implementiert, wie Sie Sie haben.
Mit einem
List.get(i)
istO(1)
welche macht hält der index die Schnellste option.List.indexOf(String)
istO(n)
. Mit einem NavigatbleSet könnte attraktiv erscheinen, wie es istO(log n)
jedoch die Kosten der Erstellung eines Objekts ist so hoch, dass die Sammlung ziemlich groß vor, Sie würden einen Vorteil sehen. (In diesem Fall verwenden Sie die erste option)List.get(int)
istO(1)
kann Es den code einfacher als gut.Wenn Ihre Elemente werden nicht wiederholt, was Sie brauchen, ist ein NavigableSet:
http://download.oracle.com/javase/6/docs/api/java/util/NavigableSet.html
Methoden
higher
undlower
sind, was Sie suchen.Listen nicht über eine
nextElement()
Methode.indexOf
gibt den integer-index des Elements. Sie konnte einfach addieren (oder subtrahieren), um die nächste (oder Vorherige) item:Jedoch auf der Suche nach einem Objekt mit
indexOf
aufArrayList
ist ein sehr langsamer Prozess, weil es ist zu prüfen, jeden einzelnen Eintrag. Es gibt bessere Möglichkeiten, aber das hängt davon ab, was du eigentlich zu erreichen versuchen.