2016-08-18 4 views
5

Мне нужно прорезать хэш с 5000 элементами, но после итерации на 500-м элементе мне нужно сделать сон, а затем продолжить следующие 500 предметов. Вот пример, украденный с here. Любая помощь была бы оценена.итерации через hashmap 'в кусках

import java.util.HashMap; 
import java.util.Map; 

public class HashMapExample { 

    public static void main(String[] args) { 
     Map vehicles = new HashMap(); 

     // Add some vehicles. 
     vehicles.put("BMW", 5); 
     vehicles.put("Mercedes", 3); 
     vehicles.put("Audi", 4); 
     vehicles.put("Ford", 10); 
     // add total of 5000 vehicles 

     System.out.println("Total vehicles: " + vehicles.size()); 

     // Iterate over all vehicles, using the keySet method. 
     // here are would like to do a sleep iterating through 500 keys 
     for(String key: vehicles.keySet()) 
      System.out.println(key + " - " + vehicles.get(key)); 
     System.out.println(); 

     String searchKey = "Audi"; 
     if(vehicles.containsKey(searchKey)) 
      System.out.println("Found total " + vehicles.get(searchKey) + " " 
        + searchKey + " cars!\n"); 

     // Clear all values. 
     vehicles.clear(); 

     // Equals to zero. 
     System.out.println("After clear operation, size: " + vehicles.size()); 
    } 
} 
+0

Этот вопрос намного чище, чем раньше. +1 – byxor

+0

@BrandonIbbotson спасибо, что я собирался удалить старый, но когда кто-то отправил ответ, я больше не мог его удалять. – PHA

+0

@PHA, вы всегда можете попросить ответчика переписать свой ответ здесь, чтобы вы могли удалить этот вопрос. –

ответ

12

Просто переменную-счетчик, чтобы следить за количеством итераций до сих пор:

int cnt = 0; 
for(String key: vehicles.keySet()) { 
    System.out.println(key + " - " + vehicles.get(key)); 

    if (++cnt % 500 == 0) { 
    Thread.sleep(sleepTime); // throws InterruptedException; needs to be handled. 
    } 
} 

Обратите внимание, что если вы хотите как ключ и значение в цикле, то лучше итерацию изображения карты entrySet():

for(Map.Entry<String, Integer> entry: vehicles.entrySet()) { 
    String key = entry.getKey(); 
    Integer value = entry.getValue(); 
    // ... 
} 

Также: не используйте сырые типы:

Map<String, Integer> vehicles = new HashMap<>(); 
Смежные вопросы