我试图找出使用散列图的第一个重复单词,但我无法理解为什么不创建“地图”。我调试了,在调试器中看不到map变量。
import java.util.HashMap;
import java.util.Map;
public class HashMapTest {
static HashMap<String,Integer> map = new HashMap<String, Integer>();
Boolean findRepeat(String word){
if(map.containsKey(word) && map.get(word) > 1){
return true;
}
else map.put(word, map.containsKey(word) ? map.get(word)+1:1);
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMapTest hash = new HashMapTest();
for(Map.Entry<String, Integer> entry : hash.map.entrySet()){
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
String[] arr = "I am a disco dancer you are not a dancer".split(" ");
for (String word : arr){
if(hash.findRepeat(word)) System.out.println(word);
}
}
}
答案 0 :(得分:0)
Hashmap不能包含重复键(HashMap)
在您的情况下if(map.containsKey(word) && map.get(word) > 1)
将始终返回false
它应该是if(map.containsKey(word) && map.get(word) == 1)
答案 1 :(得分:0)
问题在于findRepeat。如果您已经有任何给定项目的条目,则需要重复,因此您需要替换此条件
if(map.containsKey(word) && map.get(word) > 1){
与
if(map.containsKey(word) && map.get(word) > 0){
到目前为止,您需要检查地图是否有任何字词。
希望这有帮助