Hallo zusammen,
ich habe eine
Diese Hashmap versuche ich so zu filtern, dass ich die für die einzelnen Alter an eine andere Methode übergebe, die dann anhand des alters und der Spanne einen passenden Partner aussucht. Ich bin mir aber nicht sicher, ob ich die Map und die List sauber durchlaufe, da ich mit beiden noch nicht viel gemacht habe. Könntet ihr für mich über den Code gucken und sagen, ob das alles so richtig ist?
ich habe eine
Map<Integer, List<Integer>>
, in der jede List das Alter einer Person und die Altersspanne enthält, in der sie sich einen Partner sucht.Diese Hashmap versuche ich so zu filtern, dass ich die für die einzelnen Alter an eine andere Methode übergebe, die dann anhand des alters und der Spanne einen passenden Partner aussucht. Ich bin mir aber nicht sicher, ob ich die Map und die List sauber durchlaufe, da ich mit beiden noch nicht viel gemacht habe. Könntet ihr für mich über den Code gucken und sagen, ob das alles so richtig ist?
Java:
public static void partnerSetup() {
Map<Integer, ArrayList<Integer>> dbMap = new HashMap<Integer, ArrayList<Integer>>();
String select = "SELECT ID, Jahre, Hat_Partner FROM individuen WHERE Familienstand IS 2 AND "
+ "Hat_Partner IS NULL AND Geschlecht IS 0 ORDER BY Jahre LIMIT 100;";
Random r = new Random();
int rnd;
DBController dbc = DBController.getInstance();
dbc.initDBConnection();
try {
Statement stmt = DBController.connection.createStatement();
ResultSet rs = stmt.executeQuery(select);
// Suche nach den richtigen Spaltennummern.
int spalteID = rs.findColumn("ID");
int spalteJahre = rs.findColumn("Jahre");
while (rs.next()) {
// Einlesen der jeweiligen Werte aus den Spalten
int spalte1 = rs.getInt(spalteID);
int spalte2 = rs.getInt(spalteJahre);
ArrayList<Integer> dbList = new ArrayList<Integer>();
// Schreiben der Spalten in die ArrayList
dbList.add(spalte2);
dbList.add(null); // Hier steht später die Altersspanne
dbMap.put(spalte1, dbList);
}
}catch (SQLException e) {
e.printStackTrace();
}
// Für jede, in die Hashmap kopierte Person die Altersspanne per Zufall aussuchen.
for (Map.Entry<Integer, ArrayList<Integer>> entry : dbMap.entrySet()){
int key = entry.getKey();
ArrayList<Integer> tmpList = entry.getValue();
rnd = r.nextInt(1000);
if (rnd <= 960)
tmpList.set(1, 10);
else if (rnd >960 && rnd <= 995)
tmpList.set(1, 15);
else
tmpList.set(1, 100);
dbMap.put(key, tmpList);
}
ArrayList<Integer> spanne10 = new ArrayList<Integer>();
ArrayList<Integer> spanne15 = new ArrayList<Integer>();
ArrayList<Integer> spanneMax = new ArrayList<Integer>();
for (int alter = 16; alter <= 100; alter++){
for (Map.Entry<Integer, ArrayList<Integer>> entry : dbMap.entrySet()){
int key = entry.getKey();
ArrayList<Integer> tmpList = entry.getValue();
if (tmpList.get(0) == alter && tmpList.get(1) == 10)
spanne10.add(key);
else if (tmpList.get(0) == alter && tmpList.get(1) == 15)
spanne15.add(key);
else
spanneMax.add(key);
}
if (!spanne10.isEmpty() || !spanne15.isEmpty() || !spanneMax.isEmpty()){
partnerStmt(spanne10, alter, 1, 10);
partnerStmt(spanne15, alter, 1, 10);
partnerStmt(spanneMax, alter, 1, 10);
}
spanne10.clear();
spanne15.clear();
spanneMax.clear();
System.out.println(alter);
}
}
Zuletzt bearbeitet von einem Moderator: