加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在块中迭代一个hashmap’

发布时间:2020-12-15 02:49:46 所属栏目:Java 来源:网络整理
导读:我需要遍历一个包含5000个项目的hashmap,但是在迭代了第500个项目之后我需要进行一次睡眠然后继续下一个500项目.这是从 here偷来的例子.任何帮助将不胜感激. import java.util.HashMap;import java.util.Map;public class HashMapExample { public static vo
我需要遍历一个包含5000个项目的hashmap,但是在迭代了第500个项目之后我需要进行一次睡眠然后继续下一个500项目.这是从 here偷来的例子.任何帮助将不胜感激.
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()); 
    }
}

解决方法

只需要一个计数器变量来跟踪到目前为止的迭代次数:
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<>();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读