我制作了一个模拟Huffman Algorithm
的程序。到目前为止,我处于问题的中间,因为我的教授想要打印树,这将使左节点与右节点区分开来。这是我的代码,顺便说一下我使用arrayList
来制作这个程序。有什么方法可以用正确的方式打印出来吗?
String inputtedText = jTextArea1.getText();
HashMap<Character, Integer> map = new HashMap<>();
for (char ch : inputtedText.toCharArray()) {
if (map.containsKey(ch)) {
int val = map.get(ch);
map.put(ch, val + 1);
} else {
map.put(ch, 1);
}
}
jTextArea2.append(" Symbol Weight \n");
jTextArea2.append("-------------------------------------------------------------\n");
map.keySet().stream().forEach((key) -> {
jTextArea2.append("\t"+key + " \t"+ map.get(key)+ "\n");
});
List<Integer> list = new ArrayList();
list.addAll(map.values());
Collections.sort(list);
jTextArea2.append("\n Sorted Values: "+ list );
do {
String listStr = list.toString();
finalOutput.add(listStr);
list.add(list.get(0) + list.get(1));
list.remove(0);
list.remove(0);
Collections.sort(list);
} while (list.size() != 1);
finalOutput.add("[" + list.get(0)+"]");
Collections.reverse(finalOutput);
for(int i = 0; i<finalOutput.size(); i++){
jTextArea4.append(finalOutput.get(i) +"\n");
}
jTextField2.setText(Integer.toString(list.get(0)));
这是输入文本&#34; Hello World的输出。&#34;
[12] [5,7] [3,4,5] [2,3,3,4] [2,2,3,3] [1,2,2,2,3,3] ] [1,1,1,2,2,2,3] [1,1,1,1,1,2,2,3] [1,1,1,1,1,1,1,1,1,1 2,3]