Java中哈希表的迭代和删除
我在Java中有一个哈希表,希望迭代表中的所有值,并在迭代时删除一个特定的键值对Java中哈希表的迭代和删除,java,iterator,hashtable,Java,Iterator,Hashtable,我在Java中有一个哈希表,希望迭代表中的所有值,并在迭代时删除一个特定的键值对 如何做到这一点?您需要使用显式的java.util.Iterator来迭代映射的条目集,而不是使用java 6中可用的增强For循环语法。下面的示例迭代整数,字符串对的映射,删除其整数键为null或等于0的任何条目 Map<Integer, String> map = ... Iterator<Map.Entry<Integer, String>> it = map.entry
如何做到这一点?您需要使用显式的
java.util.Iterator
来迭代映射的条目集,而不是使用java 6中可用的增强For循环语法。下面的示例迭代整数
,字符串
对的映射
,删除其整数
键为null或等于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();
}
}
Map=。。。
迭代器it=map.entrySet().Iterator();
while(it.hasNext()){
Map.Entry=it.next();
//如果键为null或等于0,则删除条目。
if(entry.getKey()==null | | entry.getKey()==0){
it.remove();
}
}
您可以使用临时删除列表:
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);
}
List keyList=newarraylist;
for(Map.Entry:hashTable){
if(entry.getValue().equals(“delete”)//替换为您自己的检查
添加(entry.getKey());
}
用于(字符串键:键列表){
hashTable.remove(键);
}
您可以在中找到有关哈希表方法的更多信息,以便了解要提前删除的键、值对?这样做更清楚,那么:
table.delete(key);
for (K key: table.keySet()) {
// do whatever you need to do with the rest of the keys
}
您可以使用枚举
:
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);
}
哈希表=。。。
枚举枚举键=table.keys();
while(enumKey.hasMoreElements()){
整数key=enumKey.nextElement();
字符串val=table.get(键);
如果(key==0&&val.equals(“0”))
表.删除(键);
}
在哈希表中不能有null
键。这就是它与地图的不同之处。此外,您正在上述代码中查询Map.Entry getValue
,而不是getKey
。您不能执行entry.getValue()==0
,因为值的类型为String
@polygene,Map是一个对null没有限制的接口。HashMap是一个不允许空值的映射实现。我在代码中不引用Hashtable,也不会使用它,因为它被HashMap取代(它允许空键和值)。顺便说一句,2次向下投票?!似乎有些人一直在使用JDK1.1集合,或者根本不想阅读Map的API定义。我提到了Hashtable
,因为OP就是这么做的。而@Steve,HashMap
确实允许空值()。我只知道值,所以这不起作用。谢谢你的关注,你可以做到这一点,但没有必要使用额外的收藏;这只会让事情变得更复杂。对于HashMap和其他映射也是如此:我们可以对HashMap也使用枚举吗?