Ich habe ein Paket namens Things. In diesem Paket gibt es regelmäßige und abstrakte Klassen wie Obst, Lebensmittel, gekühlt haltbar, Schuhe, Artikel usw. Ich möchte einen Filter erstellen, der diese beim Anklicken filtern würde. Zum Beispiel würde das Klicken auf die Schaltfläche Obst nach Früchten filtern. In einem separaten Paket namens CODE habe ich 4 Klassen, von denen jede eine Funktion wie das Importieren meiner Daten und Methoden, das Ausführen der App, der GUI und des Controllers bietet. Ich habe die GUI-Klasse eingerichtet, um die Schaltfläche anzuzeigen. Ich bin jedoch verwirrt darüber, wie Java meine Elemente in der "Listening" -Klasse filtern kann - eine Klasse, die auf die in der GUI-Klasse angeklickten Schaltflächen reagiert. Wie gehe ich beim Schreiben des Codes vor? Ich habe folgendes versucht, aber es funktioniert nicht. Muss ich dinge.food in den Code importieren?Filterung für Elemente in Java
In einem anderen Beitrag gab es diesen Code:
List<Person> beerDrinkers = persons.stream()
.filter(p -> p.getAge() > 16).collect(Collectors.toList());
//Lets say I edit this to make it similar to my problem
List<Item> Perishables = Food.stream()
.filter(p -> p.getName()).collect(Collectors.toList());
, die nicht funktionieren würde, und es gibt mir Fehler. Könnte jemand erklären, wie dieser Code funktioniert und wie ich ihn auf mein Problem anwenden könnte?
// I currently have this empty in my controller class to use as a filter. Am I suppose to filter over here or in the class that holds the methods?
else if(text.equals("Food")){
}
Paket Produkte; öffentliche abstrakte Klasse Lebensmittel erweitert Artikel {
String Expiration_Date;
public String toString()
{
return super.toString() + ", Expiration: " + Expiration_Date;
}
}
package Products;
public class Fruit extends Perishable {
public Fruit(String s)
{
StringTokenizer stk = new StringTokenizer(s);
stk.nextToken();
this.Item_name = stk.nextToken();
this.Item_code = stk.nextToken();
this.price = Double.parseDouble(stk.nextToken());
this.Expiration_Date = stk.nextToken();
if (stk.nextToken().compareTo("false") == 0)
this.flag = false;
else
this.flag = true;
this.inventory = Integer.parseInt(stk.nextToken());
}
public String toString()
{
return super.toString();
}
}
Es gibt eine Sache, die meine Aufmerksamkeit gebracht hat, haben Sie Code: Filter (p -> p.getName()). Funktion, die an Filter übergeben wird, sollte einen booleschen Wert zurückgeben, Funktionsname getName, der den vom Filter verwendeten Wert zurückgibt, sugget return wird nicht boolesch sein. – user902383
durch hinzufügen, könnten Sie Fehler hinzufügen, die Sie bekommen? das könnte einige Probleme beheben – user902383