Java에서 Hashtable을 가지고 있고 반복하는 동안 특정 키 - 값 쌍을 삭제하고 테이블의 모든 값을 반복하려고합니다.Java의 Hashtable에서 반복 및 삭제
어떻게 처리 할 수 있습니까?
Java에서 Hashtable을 가지고 있고 반복하는 동안 특정 키 - 값 쌍을 삭제하고 테이블의 모든 값을 반복하려고합니다.Java의 Hashtable에서 반복 및 삭제
어떻게 처리 할 수 있습니까?
당신은, 오히려 Map
Integer
의, String
쌍을 통해 자바 6. 다음의 예 반복에서 사용할 수있는 향상된에 대한 루프 구문을 사용 할 수있는 것보다 설정 Map
의 항목을 반복 명시 적 java.util.Iterator
를 사용할 필요가
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);
}
당신에게 : 그 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();
}
}
'Hashtable '에'null'키를 사용할 수 없습니다. 그것이지도와 다른 점입니다. 또한 위의 코드에서'getKey' 대신'Map.Entry getValue'를 쿼리합니다. 값이'String' 타입이므로'entry.getValue() == 0'을 할 수 없습니다. – polygenelubricants
@polygenelubricants, Map은 null에 대한 제한이없는 인터페이스입니다. HashMap는 null을 허용하지 않는 Map 구현입니다. –
내 코드에서 Hashtable을 참조하지 않으며 HashMap에 의해 대체되었으므로 어쨌든 사용하지 않을 것입니다. **는 null 키와 값을 허용합니다 **. – Adamski
미리보기에서 삭제할 키, 값 쌍을 알고 계십니까? 그런 다음,이 일을 단지 더 명확입니다 :
이table.delete(key);
for (K key: table.keySet()) {
// do whatever you need to do with the rest of the keys
}
나는이 값을 알기 때문에 작동하지 않을 것이다. 찾는 데 감사드립니다. –
사용할 수 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);
}
같은 : http://stackoverflow.com/questions/46898/iterate-over -each-entry-in-a-map –