Mein ProblemHolen Sie sich eine Unterliste aus einer Arraylist effizient
Ich habe eine feste Größe Arraylist, die benutzerdefinierten Variablen enthält. Obwohl die ArrayList eine feste Größe hat, werden viele von ihnen tatsächlich null sein. Die Sache ist, dass ich die ArrayList ohne die Nullvariablen innerhalb es zurückgeben muss. Eine wichtige Sache zu beachten:die ArrayList wird alle Nicht-Null-Elemente zuerst haben, und dann alle Nullen unter ihnen, z. B. die Elemente sind nicht gemischt. Beispiel: [nicht-null, nicht null, .... null, null, null]
Meine Abhilfe
ich aber von einer for-Schleife erstellen, die (von den letzten geprüft zum ersten Index) jedes der Elemente innerhalb der ArrayList, um festzustellen, ob es null ist oder nicht. Wenn null ist, dann würde ich diesen Code nennen:
for (i = size-1; i >=0 ; i--) {
groupList = new ArrayList<>(groupList.subList(0, i));
}
Meine Frage
Wenn die Arraylist zu groß ist, ist diese Methode könnte ich besonders langsam (oder nicht?). Ich habe mich gefragt, ob es eine bessere, leistungsfähigere Lösung gibt. AFAIK die .subList-Methode ist teuer.
Die Methode '.subList' ist O (1). Es kopiert nicht; es ist _super super billig._ –
Dies zeigt ein ernsthaftes Designproblem.Was ist der Punkt, der eine Liste fester Größe macht und Nullen in der Liste speichert, wenn das, was Sie wirklich wollen, eine Liste variabler Größe ist, die keine Nullen enthält? Warum speichern Sie nicht zumindest den Index des ersten Nullwertes in einer Variablen? –
@Rainbolt Ich reagierte hauptsächlich auf den letzten Satz der OP-Frage, die behauptete, "die .subList-Methode ist teuer". –