在Java中迭代和从Hashtable中删除

我在Java中有一个Hashtable,想迭代表中的所有值,并在迭代时删除特定的键值对。

这可能怎么做?

您需要使用显式的java.util.Iterator遍历Map的入口集,而不是使用Java 6中提供的增强型For-loop语法。下面的示例遍历整个MapString对,删除其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(); } } 

您可以使用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); } 

那么你知道你想要提前删除的键值对吗? 这样做就更加清楚了,那么:

  table.delete(key); for (K key: table.keySet()) { // do whatever you need to do with the rest of the keys } 

您可以使用临时删除列表:

 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中find有关Hashtable方法的更多信息