Moh*_*sal 38 java iterator hashtable
我在Java中有一个Hashtable,想迭代表中的所有值,并在迭代时删除一个特定的键值对.
怎么可能这样呢?
Ada*_*ski 43
您需要使用一个明确的java.util.Iterator遍历Map设置,而不是能够通过使用现有的增强的for循环语法的Java 6.下列示例循环的进入Map的Integer,String对,去除其任何进入Integer关键是空还是equals 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();
  }
}
mos*_*tar 41
你可以使用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);
}
您可以使用临时删除列表:
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中找到有关Hashtable方法的更多信息
那么你知道要提前删除的键值对吗?这样做更清楚,然后:
 table.delete(key);
 for (K key: table.keySet()) {
    // do whatever you need to do with the rest of the keys
 }
| 归档时间: | 
 | 
| 查看次数: | 112716 次 | 
| 最近记录: |