【发布时间】:2018-06-10 00:34:58
【问题描述】:
我不完全了解如何返回 2D 对象。所以我写了一个方法,它接受一个文档的输入,我必须返回一个列表,其中包含所有唯一单词及其出现次数,按出现次数降序排序。要求我无法控制将其作为二维字符串数组返回。
这就是我目前所拥有的:
static String[][] wordCountEngine(String document) {
// your code goes here
if (document == null || document.length() == 0)
return null;
Map<String, String> 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<String, String> 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"] ]
如何将这样的数据存储在二维数组中?
【问题讨论】:
-
这是一个糟糕的主意,因为您使用字符串来表示数字数据。为什么不简单地返回一个
Map<String, Integer>或创建一个包含 String 和 int 值的自定义类型? -
@HovercraftFullOfEels 是的,我认为你是对的。我最好创建自己的数据类型来存储值。这是一个编码挑战,所以我必须返回一个 String[][]。不是我的选择。无论如何,谢谢。
-
哼,好吧,我不赞成他们的要求。
-
“这是一个编码挑战,所以我必须返回一个 String[][]。不是我的选择。” 编码挑战不是学习的最佳方式 Java。你最好先通过官方教程:docs.oracle.com/javase/tutorial
-
@TimothyTruckle 谢谢,我会记住的。
标签: java sorting multidimensional-array hashmap