【发布时间】:2014-04-13 22:05:47
【问题描述】:
所以我有一个哈希图,其中包含作为字符串的键和作为在我的集合中出现的那些字符串的计数的整数
例如,我将有一个如下的 hashMap
Key Value
abcd 4 (meaning there are 4 duplicate strings of abcd in my Set defined someplace)
----- 13
b-b- 7
and so on..
现在我要做的是从我的 HashMap 中删除所有空字符串条目。所以在上面的例子中,我想删除所有值为 13 的空字符串。所以我得到的 HashMap 将是
Key Value
abcd 4
b-b- 7
这是我尝试做同样事情的代码。 generateFeedbackMap() 是返回 HashMap 的函数,考虑到 StringIterator 是我定义的一个类,它遍历我的字符串的每个字符。
for(String key : generateFeedbackMap().keySet()) {
StringIterator it = new StringIterator(key);
int counter = 0;
while(it.hasNext()){
String nextChar = it.next();
if(nextChar.equals("-")){
counter++;
}
Iterator<Map.Entry<String, Integer>> mapIterator = generateFeedbackMap().entrySet().iterator();
if(counter >= key.length()){
while(mapIterator.hasNext()){
Map.Entry<String, Integer> entry = mapIterator.next();
if(entry.getKey().equals(key)){
mapIterator.remove();
}
}
}
}
}
所以我在找到“-”字符的地方增加计数器。当计数器等于我的键字符串长度时,这意味着它是一个空字符串,我使用 Map Iterator 将其删除,但这不会从我的 Map 中删除该条目。我做错了什么?
【问题讨论】:
-
为什么会有这些“-”字符?为什么不在将它们放入哈希图中之前忽略它们?
-
其实这是我正在制作的刽子手游戏的一部分。我需要初始正常模式之一的空字符串,但我目前正在研究另一种模式,我想从 HashMap 中删除所有空字符串
-
您是否有 1 个条目带有一堆 ---- 或者您有多个带有 --s 的条目?您想删除任何只有 -? 的条目
-
我有多个条目。例如,我将有 10 个 --s 条目,或者我将有 56 个 k--o 条目,或者我将有 79 个没有任何字母的字符串条目,例如 -----,我正在尝试删除所有 79 个条目这些字符串中没有任何字母
-
为什么不只是
if ( key.matches("^-+$") )?
标签: java algorithm hashmap hashset