Methode zum Filtern Java?

2 Antworten

Man kann also davon ausgehen, dass du die Methode selbst implementieren möchtest und dass sie sich in einer Klasse befindet, über die sie Zugriff auf alle Produktitems hat. Die Items, davon würde ich nun ausgehen, liegen ebenso in einer LinkedList.

Zuerst müsste geprüft werden, ob der erwartete Filter gewählt wurde. Hierzu gleich vorweg: Ich richte mich in meinen Code-Snippets nach üblichen Java Code-Konventionen.

if (filter == Art.GROSS) {

Dann werden die Werte der einen Liste in die andere kopiert (man könnte ebenso auf andere Mittel zurückgreifen, wie z.B. addAll oder eine klassisch selbst geschriebene Schleife) und der Variable für die alte Liste ein neues Listenobjekt zugeordnet.

LinkedList<Item> copy = storage;
storage = new LinkedList<>();

Zuletzt folgt die Rückgabe.

Mal angenommen, die Items liegen in der Liste "items", dann kannst du es am einfachsten über einen Stream lösen.

private LinkedList<Item> filterStorage(Art filter) {
	return new LinkedList<Item>(items.stream().filter(item->item.art==filter).toList());
}

Bzw. wenn es keinen zwingenden Grund gibt, dass die Methode wirklich eine LinkedList zurückgeben muss, sondern auch irgendeine List zurückgegeben werden kann:

private List<Item> filterStorage(Art filter) {
	return items.stream().filter(item->item.art==filter).toList();
}

Beim Aufruf musst du dann halt der Methode mitgeben, nach welcher Art gefiltert werden soll.

Z.B. so:

List<Item> = storage.filterStorage(Art.GROSS);