一次读取一张N键

时间:2016-08-18 12:56:13

标签: java

我有一张地图(instaWords),里面装满了数以千计的单词。我需要一次循环N项。这是我的代码。在这段代码中,我需要读取例如500字的块中的instaWords并执行" updateInstaPhrases"用那些话。有什么帮助吗?

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();                                                                       
}

我需要的是在块中迭代一个哈希映射&#39; (例如每次500件)

1 个答案:

答案 0 :(得分:1)

您可以保留一个计数器,初始化为0并为每个项目增加,同时收集您认为合适的项目(例如,ArrayList<Map.Entry<InstaWord, List<Integer>>>)。如果计数器(增量后)等于500,则处理整批,将计数器重置为0并清除集合。

另一种选择是让计数器控制循环并明确声明从中绘制Map.Entry的迭代器。通过这种方式,发生的事情可能会更加清晰。