作者:mobiledu2502885523 | 来源:互联网 | 2023-01-03 13:17
我不完全了解如何返回2D对象.所以我写了一个方法,它接受带有文档的输入,我必须返回其中所有唯一单词的列表及其出现次数,按降序排列的出现次数排序.这是一个要求,我无法控制它作为一个2维的String数组返回.
所以这是我到目前为止所拥有的:
static String[][] wordCountEngine(String document) {
// your code goes here
if (document == null || document.length() == 0)
return null;
Map map = new HashMap<>();
String[] allWords = document.toLowerCase().split("[^a-zA-Z]+");
for (String s : allWords) {
if (map.containsKey(s)) {
int newVersion = (Integer.parseInt(map.get(s).substring(1, map.get(s).length())) + 1);
String sb = Integer.toString(newVersion);
map.put(s, sb);
} else {
map.put(s, "1");
}
}
String[][] array = new String[map.size()][2];
int count = 0;
for (Map.Entry entry : map.entrySet()) {
array[count][0] = entry.getKey();
array[count][1] = entry.getValue();
count++;
}
return array;
}
我正在尝试使用HashMap来存储单词及其出现次数.将表 - >值对从表中存储到String [] []的最佳方法是什么.如果输入是:
input: document = "Practice makes perfect. you'll only
get Perfect by practice. just practice!"
输出应该是:
output: [ ["practice", "3"], ["perfect", "2"],
["by", "1"], ["get", "1"], ["just", "1"],
["makes", "1"], ["only", "1"], ["youll", "1"] ]
如何将这样的数据存储在2D数组中?
1> luk2302..:
String[][]
这个任务只是错误的数据结构.您应该使用a Map map
而不是
在方法运行期间,只需返回该映射.
这有多种原因:
你将整数存储为字符串,甚至通过再次将String解析为整数,计算然后解析回来做计算 - 坏主意.
返回的数组不保证维度,没有办法强制每个子数组只有两个元素.
关于你的评论的注意事项:如果(由于某种原因)你需要将地图转换为a,String[][]
你当然可以这样做,但是转换逻辑应该与生成地图本身的代码分开.这样,代码wordCountEngine
保持干净,易于维护.