LIFO von FIFO unterscheiden

bob651

Aktives Mitglied
Hi, habe hier einen Code
Code:
public class FolderHolder {
List<Folder> list = new ArrayList<Folder>();
public void add(Folder foo)
{ list.add(0, foo); }
public Folder remove() throws EmptyException
{ return list.remove(0); }
}
Soweit ich es sehe ist es doch ein FIFO Container, oder?
Weil das wird eine "0" geaddet, und am Ende wird diese removed.
Habt ihr Tricks wie man es vielleicht leichter herausfinden könne?
Ty
 

Kababär

Top Contributor
Es wird keine 0 geaddet, sondern der Folder foo an der Stelle 0 hinzugefügt, also ganz vorne.
Und bei remove() wird das allererste Element wird gelöscht.
Also ein FIFO.

Edit: Manche Implementierungen wie LinkedList sind eindeutig, so ist diese ein Stack, also ein LIFO.
Prinzipiell hilft es auch öfter, einfach mal aufzuzeichnen wie die Datenelemente angeordnet werden wenn sie hinzugefügt werden und wenn sie gelöscht werden.
Wenn man die zwei Prinzipien verstanden hat, sollte das dann auch nicht so schwer sein.
Oder wie darf ich die Frage verstehen?
 

bob651

Aktives Mitglied
Es wird keine 0 geaddet, sondern der Folder foo an der Stelle 0 hinzugefügt, also ganz vorne.
ach so, auf Platz 0 wird foo geaddet und bei remove wird der Eintrag auf Platz 0 sozusagen gelöscht. Ok verstehe. Naja, ich bin noch recht neu dabei und habe Schwierigkeiten LIFO und FIFO Container auf dem BLATT zu unterscheiden. Am PC ist es ja easy durch Probieren. Deshalb die Tipps ^^
 

Kababär

Top Contributor
Stell dir einfach eine Warteschlange vor. Normalerweise stellt man sich irgendwo an, der erste der ankam, wird auch als erstes aufgerufen. Er war der Erste und geht als Erster (First in, First out).
Unfair wäre es, wenn der Letzte der Erste wäre, der aufgerufen werden würde (Last in, First out).
Mach dir notfalls eine Skizze ähnlich wie du sie hier siehst:
https://de.wikipedia.org/wiki/First_In_–_First_Out#/media/File:FIFO_PEPS.png

Der IMG-Tag funktioniert nicht :eek: etwas buggy.
First_In_–_First_Out

First_In_%E2%80%93_First_Out
 

mrBrown

Super-Moderator
Mitarbeiter
Es wird keine 0 geaddet, sondern der Folder foo an der Stelle 0 hinzugefügt, also ganz vorne.
Und bei remove() wird das allererste Element wird gelöscht.
Also ein FIFO.
Also ein LIFO^^

es wird immer eine vorne hinzugefügt, und dann das vorderste entfernt. Was als letztes hinzugefügt wurde, wird also als erstes entfernt => LIFO

Edit: Manche Implementierungen wie LinkedList sind eindeutig, so ist diese ein Stack, also ein LIFO.
LinkedList implementiert Queue, also FIFO (zuinnerst add(...)/remove())
(aber sie implementiert auch Decke mit pop/push, also im Prinzip kann man sie für beides beides).
 
Zuletzt bearbeitet:

bob651

Aktives Mitglied
verstehe ich jetzt nicht mehr. auf 0 wird doch "foo" geaddet, also ist "foo" das erste was reinkam. dann wird der String auf 0 entfernt, also immer das erste. also das erste wird immer zuerst entfernt--> FIFO denk ich hmmm
 

Kababär

Top Contributor
Na.. hab ich zuerst auch gedacht.
Aber du fügst an der Stelle 0 deine Elemente ein, nicht hinten. Und holst die Elemente an der Stelle 0 raus.
Die Liste bzw. Warteschlange wurde einfach nur gedreht.
Fügst du A an der Stelle 0 ein und dann B an der Stelle 0, ist A an der Stelle 1.
Bei remove wird nun B zurückgegeben/gelöscht.
Da B als Letztes hinzugefügt wurde, aber als Erstes "aufgerufen" wird, ist es ein last in, first out.

Ich hatte den Aspekt vergessen, dass die Elemente vorne bei 0 eingefügt werden.
 

bob651

Aktives Mitglied
ach so, wenn ich dann noch B einfüge und dann remove mache, wird das letzte gelöscht, also B. AH ok, also das letzte was ich hinzugefügt habe wird gelöscht, LIFO, OK habs :D
 

Ähnliche Java Themen

Neue Themen


Oben