我想创建一个嵌套的hashmap,它返回多个文件中术语的频率。比如,
Map<String, Map<String, Integer>> wordToDocumentMap=new HashMap<>();
我已经能够返回一个术语在文件中出现的次数。
Map<String, Integer> map = new HashMap<>();//for frequecy count
String str = "Wikipedia is a free online encyclopedia, created and edited by
volunteers around the world."; //String str suppose a file a.java
// The query string
String query = "edited Wikipedia volunteers";
// Split the given string and the query string on space
String[] strArr = str.split("\\s+");
String[] queryArr = query.split("\\s+");
// Map to hold the frequency of each word of query in the string
Map<String, Integer> map = new HashMap<>();
for (String q : queryArr) {
for (String s : strArr) {
if (q.equals(s)) {
map.put(q, map.getOrDefault(q, 0) + 1);
}
}
}
// Display the map
System.out.println(map);
在我的代码中,它单独计算给定查询的频率。但是我想将查询词及其频率与其文件名进行Map。我在网上搜索了一个解决方案,但发现很难找到一个适合我的解决方案。任何帮助都将不胜感激!
1条答案
按热度按时间bbuxkriu1#
我希望我对你的理解是正确的。
您想要的是能够读入文件列表,并将文件名Map到您在上述代码中创建的Map。让我们从代码开始,把它变成一个函数:
现在有一个漂亮的函数,它可以从字符串和查询生成Map
现在您需要建立一个系统,将文件读入字符串。
有很多方法可以做到这一点。您可以在这里寻找一些适用于不同java版本的方法:https://stackoverflow.com/a/326440/9789673
接下来(假设>Java11):
其中path是指向所需文件的路径。
现在我们可以把它们放在一起: