import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
public class Dynif {
public Dynif() {
// Ein paar Daten
ArrayList<String[]>dataSet = new ArrayList<String[]>();
String[] data1 = new String[]{"1", "Meyer", "18", "Hamburg"};
dataSet.add(data1);
String[] data2 = new String[]{"2", "Müller", "16", "Hamburg"};
dataSet.add(data2);
String[] data3 = new String[]{"3", "Schulz", "16", "München"};
dataSet.add(data3);
// Suchkriterum: Integer ist die Spalte und String[] die möglichen Werte für die Spalte
// Für jeweils eine Spalte sind die Kriterien OR Bedingungen, für die verschiedenen
// Spalten AND Verknüpfungen
HashMap<Integer, String[]> searchCriteria = new HashMap<Integer, String[]>();
// Suche alle 16 oder 18 Jährigen aus Hamburg
searchCriteria.put(2, new String[]{"16", "18"});
searchCriteria.put(3, new String[]{"Hamburg"});
ArrayList<String[]> results = getResult(searchCriteria, dataSet);
// Gebe das Ergebnis aus
printData(results);
}
// Durchlauf aller Suchkriterien
private ArrayList<String[]> getResult(HashMap<Integer, String[]> searchCriteria, ArrayList<String[]>dataSet){
Set<Integer> keys = searchCriteria.keySet();
ArrayList<String[]> results = dataSet;
for (int key:keys){
// Das jeweilige Zwischenergebnis wird nach dem Kriterium für die nächste Spalte gefiltereed
results = evalCriterion(key, searchCriteria.get(key), results);
}
return results;
}
// Filterung nach den Suchkriterien für jeweils eine Spalte
private ArrayList<String[]> evalCriterion(int column, String[] vals, ArrayList<String[]> data){
ArrayList<String[]> results = new ArrayList<String[]>();
for (int i = 0; i < data.size(); i++){
for (int j = 0; j < vals.length; j++){
if (data.get(i)[column].equals(vals[j])){
results.add(data.get(i));
break;
}
}
}
return results;
}
private void printData(ArrayList<String[]> filteredData){
for (int i = 0; i < filteredData.size(); i++){
for (int j = 0; j < filteredData.get(i).length; j++){
System.out.print(filteredData.get(i)[j] + " ");
}
System.out.println();
}
}
public static void main(String args[]) {
new Dynif();
}
}