我有一個ResultSet
包含300K記錄,我正在做以下操作來迭代它(以及其他操作一旦收集)。此過程需要大約2分鐘才能完成。有什麼辦法可以優化它嗎?迭代優化HashMap
Map<String,Map<String,String>> internalMap = new HashMap<String,Map<String,String>>();
while (resultSet.next()) {
final Integer val1 = resultSet.getInt("val1");
final String val2 = resultSet.getString("val2");
final String val3 = resultSet.getString("val3");
final String val4 = resultSet.getString("val4");
final String type = resultSet.getString("type");
final String id = resultSet.getString("id");
addIntern(internalMap,val2,val1,val3,val4,type,id);
}
而且addIntern
上述方法
private static void addIntern(Map<String,Map<String,String>> internalMap, String val2, Integer val1,
String val3,String val4,String type,String id) {
String key = id+"##"+val4;
if (internalMap.get(key) == null) {
internalMap.put(key, new HashMap<String,String>());
}
internalMap.get(key).put("val3", val3);
internalMap.get(key).put("val2", val2);
if("create".equals(type)){
internalMap.get(key).put("create", val1.toString());
}
if("update".equals(type)){
internalMap.get(key).put("update", val1.toString());
}
if("delete".equals(type)){
internalMap.get(key).put("delete", val1.toString());
}
}
它看起來像你需要一個'Map'而不是'Map >' –
4castle
@ 4castle但是我們只是把值。因此,將它用作對象或地圖,兩者都會產生相同的效果。對? – NaaN
使用'Map'將會使用更多的內存,並且對於您可以存儲的值的類型來說,靈活性會更低。例如,您已經不得不將'val1'轉換爲'String'。 –
4castle