Ich habe eine Karte (instaWords), die mit Tausenden von Wörtern gefüllt ist. Ich muss es N Element auf einmal durchlaufen. Hier ist mein Code. In diesem Code muss ich instaWords in den Blöcken von z. B. 500 Wörtern lesen und "updateInstaPhrases" mit diesen Wörtern ausführen. Irgendeine Hilfe?Eine Karte lesen N Schlüssel auf einmal
private static Map<InstaWord, List<Integer>> instaWords = new HashMap<InstaWord, List<Integer>>();
// here a couple of words are added to instaWords
updateInstaPhrases(instaWords);
private static void updateInstaPhrases(Map<InstaWord, List<Integer>> wordMap)
throws SQLException, UnsupportedEncodingException {
for (Map.Entry<InstaWord, List<Integer>> entry : wordMap.entrySet()) {
InstaWord instaWord = entry.getKey();
List<Integer> profiles = entry.getValue();
pst.setBytes(1, instaWord.word.getBytes("UTF-8"));
pst.setBytes(2, instaWord.word.getBytes("UTF-8"));
pst.setBytes(3, (instaWord.lang == null) ?·
"".getBytes("UTF-8") :·
instaWord.lang.getBytes("UTF-8"));
String profilesList = "";
boolean first = true;
for (Integer p : profiles) {
profilesList += (first ? "" : ", ") + p;
first = false;
}
pst.setString(4, profilesList);
pst.addBatch();
}
System.out.println("Words batch executed");
pst.executeBatch();
con.commit();
}
Was ich brauche, ist durch eine hashmap ‚in Chunks‘ (zB 500 Stück jedes Mal)
Sie sollten Ihren Einzug wahrscheinlich so korrigieren, dass er sinnvoll ist. – khelwood
Nur für den Fall, dass Sie nicht wissen ... HashMaps haben keine bestimmte Reihenfolge für sie. Dies kann bedeuten, dass das wiederholte Überspringen von Blöcken gleichzeitig nicht korrekt funktioniert, wenn es geändert wurde. Sollte dies zu einem Problem werden, wäre eine OrderedHashMap sinnvoll. – byxor
@khelwood Ich habe es behoben, so viel wie ich konnte – PHA