Только для разнообразия:
template <typename T, typename U>
bool allequal(const T &t, const U &u) {
return t == u;
}
template <typename T, typename U, typename... Others>
bool allequal(const T &t, const U &u, Others const &... args) {
return (t == u) && allequal(u, args...);
}
if (allequal(a,b,c,'X') || allequal(a,b,c,'O')) { ... }
Вам нужно использовать явный java.util.Iterator
для итерации по набору записей Map
, а не использовать расширенный For- синтаксис цикла, доступный в Java 6. В следующем примере выполняется итерация пары Map
из Integer
, String
, удаляя любую запись, имеющую ключ 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();
}
}
Итак, вы заранее знаете пару ключ-значение, которую хотите удалить? Тогда это будет намного яснее:
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);
}
Вы можно найти дополнительную информацию о методах Hashtable в Java API