簡體   English   中英

在Java中迭代和刪除Hashtable

[英]Iterating over and deleting from Hashtable in Java

我在Java中有一個Hashtable,想迭代表中的所有值,並在迭代時刪除一個特定的鍵值對。

怎么可能這樣呢?

您需要使用顯式的java.util.Iterator迭代Map的入口集,而不是能夠使用Java 6中提供的增強的For循環語法。以下示例遍歷Map of IntegerString對,刪除其Integer鍵為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();
  }
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM