遍历Map key-value的两种方法
2015-10-23 00:05
423 查看
以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,然后根据key,依次从Map中去数据,基本方式如下:
Map<String,String> testData = new HashMap<String, String>();
………………………………………………一些赋值操作………………………………...
Set<String> keys = testData.keySet();
for(String key :keys){
System.out.println(key+" "+testData.get(key));
}
上述其中是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现还Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<Map.Entry<K, V>> entrySet();方法。也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法
Set<Entry<String, String>> entries = testData.entrySet();
for (Entry<String, String> entry : entries) { System.out.println(entry.getKey()+":"+entry.getValue());
}
当少量的数据时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种块。
当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。
Map<String,String> testData = new HashMap<String, String>();
………………………………………………一些赋值操作………………………………...
Set<String> keys = testData.keySet();
for(String key :keys){
System.out.println(key+" "+testData.get(key));
}
上述其中是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现还Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<Map.Entry<K, V>> entrySet();方法。也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法
Set<Entry<String, String>> entries = testData.entrySet();
for (Entry<String, String> entry : entries) { System.out.println(entry.getKey()+":"+entry.getValue());
}
当少量的数据时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种块。
当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。
相关文章推荐
- MySQL EXPLAIN 独立子查询dependent subquery 优化示例
- UIButton 设置image ,title和setBackgroundImage
- ERPbuilder:连锁零售企业发展的新思路
- 从信息走向交易,B2Bbuilder能做些什么
- ERPbuilder:连锁零售企业发展的新思路
- Chapter 0.SymmetricDS快速入门指南( Quick Start Guide)
- web 应用 使用 shiro 安全框架 在 was7访问性能慢
- 详细整理:UITableView优化技巧
- vector容器 std::unique函数的实现
- UVA1621 Guess(贪心+精度)
- UITabBarController定制
- 最长公共上升子序列——hdu1423 Greatest Common Increasing Subsequence
- IOS 开发UI篇—iOS开发中三种简单的动画设置
- 关于java ArrayBlockingQueue 源码解析的小疑惑
- 关于UINavigationContrller官方文档翻译
- uestc 594 我要长高 单调队列优化
- (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对?
- android入门(一)---UI组件之文本框(TextView)
- 蓝牙Android_Lightblue调试工具存在的bug
- 基于STM32与μC/GUI的多路PID控制器