回答
您需要使用一个明确的java.util.Iterator
遍历Map
的项设置,而不是能够在Integer
的Map
,String
双使用可用的增强的for循环语法的Java 6.下列示例循环,除去其Integer
键为空或等于0
Map<Integer, String> map = ...
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, String> entry = it.next();
// Remove entry if key is null or equals 0.
if (entry.getKey() == null || entry.getKey() == 0) {
it.remove();
}
}
你不能在'Hashtable'中有'null'键。这就是它与“Map”不同的地方。另外,你正在上面的代码中查询'Map.Entry getValue',而不是'getKey'。你不能执行'entry.getValue()== 0',因为这些值的类型是'String'。 – polygenelubricants 2010-02-28 14:55:28
@polygenelubricants,Map是一个对null没有限制的接口。 HashMap是一个不允许空值的Map实现。 – 2010-02-28 16:28:03
我没有在我的代码中引用Hashtable,并且不会使用它,因为它被HashMap取代(它**不允许空键和值)。 – Adamski 2010-02-28 19:01:32
您可以使用一个临时删除列表中的任何条目:
List<String> keyList = new ArrayList<String>;
for(Map.Entry<String,String> entry : hashTable){
if(entry.getValue().equals("delete")) // replace with your own check
keyList.add(entry.getKey());
}
for(String key : keyList){
hashTable.remove(key);
}
你可以在Java API
您可以这样做,但不需要使用额外的集合;这只会让事情变得更加复杂。 – Adamski 2010-02-28 19:05:06
中找到更多关于Hashtable方法的信息所以你知道你想要提前删除的键值对吗?这只是更清楚地做到这一点,则:
table.delete(key);
for (K key: table.keySet()) {
// do whatever you need to do with the rest of the keys
}
我只知道价值,所以这不会工作。 虽然感谢您的期待 – 2010-02-28 15:44:57
您可以使用Enumeration
:
Hashtable<Integer, String> table = ...
Enumeration<Integer> enumKey = table.keys();
while(enumKey.hasMoreElements()) {
Integer key = enumKey.nextElement();
String val = table.get(key);
if(key==0 && val.equals("0"))
table.remove(key);
}
- 1. 从哈希表中删除数据
- 2. Java迭代哈希表vs ArrayList速度
- 3. 在C++中删除哈希表
- 4. 在HAML中迭代哈希数组哈希
- 5. 在perl中迭代哈希值
- 6. 迭代哈希常量在Ruby中
- 7. PowerShell哈希表值从循环外的第二个哈希表中删除
- 8. 在powershell中从哈希表中删除值
- 9. 从URL中删除哈希值window.location.hash
- 10. 从URL中删除哈希值
- 11. 从ml输出中删除哈希
- 12. Angular 2 - 从URL中删除哈希(#)
- 13. 迭代器和嵌套哈希表的Java并发问题
- 14. 从RMarkdown和Knitr中删除R输出中的哈希
- 15. 迭代哈希设置
- 16. Freemarker的:迭代哈希
- 17. 迭代哈希集合
- 18. 形式的哈希表 - 在Java中的<key,哈希表>
- 19. 哈希表在Java
- 20. 是Java中的哈希表
- 21. 如何从特定日期的哈希表中删除数据
- 22. 从数组中删除重复项而不使用哈希表
- 23. 从哈希映射表中删除项目
- 24. 在MJQ中如何从URL中删除哈希值?
- 25. 通过哈希集迭代Java中的StackOverflow异常
- 26. 在参数哈希上迭代
- 27. 删除laravel中的哈希过程5.3
- 28. 删除哈希中的数组
- 29. 在objective-c中迭代列表并从中删除项目?
- 30. 从列表和迭代器问题中删除对象
同为HashMap和其他地图:http://stackoverflow.com/questions/46898/iterate-over -ach-entry-in-a-map – 2015-04-11 10:24:00