Java 在字典里找出三个最常用的词
问题是在字典里找出三个最常用的词。我已经想出了下面的代码,但由于某种原因它不起作用(我的意思是,当我尝试在eclipse中运行它时,它直接将我引导到调试页面,尽管我在编译器屏幕上没有发现任何错误),调试后我找不到原因。你能帮我找到问题吗 线程“main”java.lang.NullPointerException位于java.util.PriorityQueue.offer的异常Java 在字典里找出三个最常用的词,java,algorithm,dictionary,data-structures,heap,Java,Algorithm,Dictionary,Data Structures,Heap,问题是在字典里找出三个最常用的词。我已经想出了下面的代码,但由于某种原因它不起作用(我的意思是,当我尝试在eclipse中运行它时,它直接将我引导到调试页面,尽管我在编译器屏幕上没有发现任何错误),调试后我找不到原因。你能帮我找到问题吗 线程“main”java.lang.NullPointerException位于java.util.PriorityQueue.offer的异常 (未知源代码)位于java.util.PriorityQueue.add (未知来源)在一般问题中。MostComm
(未知源代码)位于java.util.PriorityQueue.add
(未知来源)在一般问题中。MostCommonWords.mostCommonStringFinder
(MostCommonWords.java:41)在generalquestions.MostCommonWords.main上
(MostCommonWords.java:61)
公共静态队列mostCommonStringFinder(字符串文档,int k){
if(document==null){
抛出新的IllegalArgumentException();
}
if(document.isEmpty()){
抛出新的IllegalArgumentException(“文档为空”);
}
String[]wordHolder=document.split(“”);
HashMap=newHashMap();
for(字符串s:wordHolder){
如果(!map.containsKey){
地图.put(s,1);;
}
否则{
int值=map.get(s);
值++;
地图。放置(s,值);
}
}
Queue minHeap=new PriorityQueue();
for(int i=0;iminHeap.peek()){
minHeap.poll();
minHeap.add(map.get(j));
}
}
返回minHeap;
}
map
是一个HashMap
,因此键是字符串,即文本中的单词
map.get(i)
将始终返回null
,因为映射中没有Integer
键
由于您返回的是
队列
,因此我假设期望值是最大的k
字数,因此将Queue minHeap
等所有内容替换为:
List<Integer> counts = new ArrayList<>(map.values());
Collections.sort(counts, Collections.reverseOrder());
return counts.subList(0, k);
输出
map
是一个HashMap
,因此键是字符串,即文本中的单词
map.get(i)
将始终返回null
,因为映射中没有Integer
键
由于您返回的是
队列
,因此我假设期望值是最大的k
字数,因此将Queue minHeap
等所有内容替换为:
List<Integer> counts = new ArrayList<>(map.values());
Collections.sort(counts, Collections.reverseOrder());
return counts.subList(0, k);
输出
“不起作用”不是对正在发生的事情的有用描述。请提供问题的描述,并节省我们重新学习您已经知道的内容的时间!我的意思是,当我尝试在eclipse中运行它时,它会直接引导我进入调试页面,尽管我在java.util.PriorityQueue.add(未知源)的java.util.PriorityQueue.offer(未知源)处的线程“main”java.lang.NullPointerException中没有得到任何错误在generalquestions.MostCommonWords.mostCommonStringFinder(MostCommonWords.java:41)在generalquestions.MostCommonWords.main(MostCommonWords.java:61)我相信这对于(int I=0;I
map.get(s)
很好用。没问题。现在,map.get(i)
根本不起作用。这是真的,他可能应该返回单词。。。好吧,问题解决了;)但是这张地图是什么?放(s,1);?那么op在地图上放了一个吗?是的,似乎是正确的,因为关键字(单词)不在地图上。。我不明白为什么答案很不清楚。一个小小的解释不会害死任何人@PetterFriberg我不明白你的意思,请你说清楚一点好吗?:)map.get(s)
很好用。没问题。现在,map.get(i)
根本不起作用。这是真的,他可能应该返回单词。。。好吧,问题解决了;)
String text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " +
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, " +
"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +
"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " +
"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
System.out.println(mostCommonStringFinder(text, 3));
[3, 2, 2]