【发布时间】:2011-01-17 08:46:50
【问题描述】:
我正在尝试使用keySet() 方法循环HashMap,如下所示:
for (String key : bundle.keySet()) {
String value = bundle.get(key);
...
}
我在代码的其他部分在 HashMaps 上使用了很多 for-each 循环,但这是一种奇怪的行为:它的大小为 7(这是正常的)但 keySet、entrySet 和 values 是null(根据 Eclipse 调试器)!
“bundle”变量的实例化和填充如下(没有原始...):
Map <String, String> privVar;
Constructor(){
privVar = new HashMap<String, String>();
}
public void add(String key, String value) {
this.privVar.put(key, value);
}
【问题讨论】:
-
如果你在 HashMaps 上做很多 for-each 循环,我想你可能想改变你的结构。
-
我同意@Macarse。另外:如果您想循环遍历
Map并且需要键和值,通常最好循环遍历entrySet()以避免对每个键进行不必要的查找。 -
感谢您的建议 Joachim,我会这样做的。 @Macarse:我将值放入从文件(Excel 电子表格)中提取的映射键值对中,以在创建新电子表格之前应用一组语法规则(regExp 检查)。你认为地图不是存储这个的好对象吗?
-
所以你正在做一个 Map
,其中键是一行,值是正则表达式? -
不,不。键是键,值是翻译。它完全等同于“ResourceBundle 属性”文件。所以地图是 ResourceBundle 的等价物。这就是真正启发我的原因:)
标签: java collections map hashmap