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
}
}