Filterliste basierend auf dynamischen Kriterien mithilfe von Java-StreamsJava

Java-Forum
Guest
 Filterliste basierend auf dynamischen Kriterien mithilfe von Java-Streams

Post by Guest »

Ich habe eine Personenliste, die ein Mitarbeiterlistenobjekt enthält.
Der Mitarbeiter hat das Attribut Name, Alter, Abteilung, Stadt.
Jetzt habe ich eine Liste mit einer anderen Liste.
Die Liste von Kriterien können dynamisch sein, da sie ein oder mehrere Kriterien enthalten können. Ich möchte die Mitarbeiterliste basierend auf dieser dynamischen Kriterienliste filtern. Wenn der Typ Alter ist, muss ich Alter mit emp.age vergleichen, und wenn Typ Stadt ist, muss ich mit emp.city vergleichen.
Das bin ich ohne Getter/Setter hier. Aber so sehen die Klassen aus:

Code: Select all

public class Person {

private List empList;

public Person(List empList) {
super();
this.empList = empList;
}

public List getEmpList() {
return empList;
}

public void setEmpList(List empList) {
this.empList = empList;
}

}

Code: Select all

public class Employee {

private String name;
private int age;
private String city;
private String dept;

public Employee(String name, int age, String city, String dept) {
super();
this.name = name;
this.age = age;
this.city = city;
this.dept = dept;
}
}

Code: Select all

public class Criteria {

private CriteriaType type;
private String value;

public Criteria(CriteriaType type, String value) {
super();
this.type = type;
this.value = value;
}
}

Code: Select all

public enum CriteriaType {
NAME, CITY, AGE, DEPT
}

Code: Select all

public class FilterEmployee {

public static void main(String[] args) {

Employee emp1 = new Employee("John", 30, "Dallas", "HR");
Employee emp2 = new Employee("Steve", 31, "Austin", "HR");
Employee emp3 = new Employee("Andrew", 25, "Houston", "Finance");
Employee emp4 = new Employee("Mike", 30, "Dallas", "HR");

List empList = new ArrayList();
empList.add(emp1);
empList.add(emp2);
empList.add(emp3);
empList.add(emp4);

Person personObj = new Person(empList);

Criteria c1 = new Criteria(CriteriaType.CITY, "Dallas");
Criteria c2 = new Criteria(CriteriaType.NAME, "Mike");

List criteriaList = new ArrayList();
criteriaList.add(c1);
criteriaList.add(c2);

//Filter person list containing employee list on the basis of //Criteria list

}

}
Gibt es eine saubere Möglichkeit, den Vergleich und die Filterung mithilfe von Java-Streams durchzuführen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post