我把一个字符串数组元素是一个映射,其中字符串数组的元素是键,单词的频率是值,例如:
String[] args = {"if","it","is","to","be","it","is","up","me","to","delegate"};
那么地图上将有类似 [ if:1, it:2 .... ]
Set<String> keys = m.keySet();
System.out.println("keyset of the map : "+keys);
打印所有键: "if","it","is","to","be","it","is","up","me","to","delegate"
Set<Map.Entry<String, Integer>> entrySet = m.entrySet();
Iterator<Map.Entry<String, Integer>> i = entrySet.iterator();
while(i.hasNext()){
Map.Entry<String, Integer> element = i.next();
System.out.println("Key: "+element.getKey()+" ,value: "+element.getValue());
}
打印所有键值对:
使用条目集将打印所有值:
Key: if ,value: 1
Key: it ,value: 2
Key: is ,value: 2
Key: to ,value: 2
Key: be ,value: 1
Key: up ,value: 1
Key: me ,value: 1
Key: delegate ,value: 1
但是下面的代码块应该输出与上面完全相同的输出,但是不会:
Iterator<String> itr2 = keys.iterator();
html" target="_blank">while(itr2.hasNext()){
//System.out.println(itr1.next()+" ");
//System.out.println(m.get(itr1.next())+" ");
System.out.println("Key: "+itr2.next()+" ,value: "+m.get(itr2.next()));
}
它打印:
Key: if ,value: 2
Key: is ,value: 2
Key: be ,value: 1
Key: me ,value: 1
但是,如果我们在while循环中取消注释第1行,即
System.out.println(itr1.next()+" ");
并评论这一行
System.out.println("Key: "+itr2.next()+" ,value: "+m.get(itr2.next()));
然后我们得到所有键: {"if","it","is","to","be","it","is","up","me","to","delegate"};
如果使用m.get()
with itr2.next()
,则迭代器没有几个键!
每次调用Iterator.next()
move都会将迭代器移至下一个元素。如果要在多个语句或表达式中使用当前元素,则必须将其存储在局部变量中。甚至更好的是,为什么不简单地使用for-
each循环?
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
而且,循环遍历entrySet更快,因为您不必为每个键两次查询映射。另外,Map.Entry
实现通常也会实现该toString()
方法,因此您不必手动打印键值对。
for (Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry);
}
问题内容: 是否有与C ++等效的Java Map keySet()? Java 方法返回“此映射中包含的键的设置视图”。 问题答案: 也许以下可能有用: 使用STL兼容序列(例如std :: vector,std :: deque或std :: list)的 make_key_set 函数的重载可以如下所示:
问题内容: 所有, 谁能让我确切知道两者之间的性能问题?站点:CodeRanch简要概述了使用keySet()和get()时需要的内部调用。但是如果使用keySet()和get()方法时,任何人都可以提供有关流的确切详细信息,那将是很好的。这将帮助我更好地了解性能问题。 问题答案: 首先,这完全取决于您使用的地图类型。但是,由于JavaRanch线程讨论了HashMap,因此我假设这就是您所指的实
在此Map中获取一组键。 语法 (Syntax) Set keySet() 参数 (Parameters) 没有。 返回值 (Return Value) 钥匙套。 例子 (Example) 以下是此方法的使用示例 - class Example { static void main(String[] args) { def mp = ["TopicName" : "Maps
如何过滤<代码>地图 仅当列表中的任何员工具有字段值性别=“M”时,我才必须过滤。 输入:
问题内容: 考虑我创建一个LinkedHashMap,如下所示: 当我打电话给我时,有没有给我订购一套?如果我打电话给我,这些也是吗? 编辑 很抱歉,是有序的,没有排序。 问题答案: 首先是 有序 但没有 排序 。被 排序 (并因此 有序 以及)。 这就是说,你不能指望的输出,并进行排序。实际上,JavaDoc说 与订单无关 (事实证明,顺序 是 :由JavaDoc的保证是保证键和值从一个Link
本文向大家介绍C ++ STL中的map :: at()和map :: swap(),包括了C ++ STL中的map :: at()和map :: swap()的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中map::at()和map::swap()函数的工作,语法和示例。 什么是C ++ STL中的映射? 映射是关联容器,它有助于按特定顺序存储由键值和映射值的组