我制作了一个单词计数器二叉搜索树,当一个单词被多次输入时它会增加该单词的计数。单词和单词计数都保存在树中。我尝试先打印计数最高的单词,然后按计数降序打印。
为了执行此操作,我将 BST 转换为 ArrayList,但现在我似乎无法弄清楚如何通过递减计数顺序对列表进行排序。这是我到目前为止所拥有的:
public ArrayList<String> toArray() {
ArrayList<String> result = new ArrayList<String>();
toArrayHelp(root, result);
Collections.sort(result);
return result;
}
private void toArrayHelp(Node<String, Integer> node, ArrayList<String> result) {
if (node == null) {
return;
}
toArrayHelp(node.left, result);
result.add("count: " + String.valueOf(node.count) + "/t word: " + node.data);
toArrayHelp(node.right, result);
}
我试过 Collections.sort() 但这不是按字符串排序,而是按单词排序。
最佳答案
- 遍历树,生成
List<Node<String, Integer>>
来自所有元素 - 对
List
进行排序, 按节点的整数部分排序 - 创建一个只保留字符串的列表,顺序相同
关于java - 如何对包含整数的 ArrayList<String> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910587/