現在、クラスのハフマンツリーを作成しています。使用可能なオプションを確認した後、優先キュー方式を採用することにしました。ただし、以下のコードを実行しようとすると、TreeNode(最初のpq.offer行)でClassCastExceptionが発生します。
public static TreeNode<CharFreq> buildTree(ArrayList<TreeNode<CharFreq>> trees) throws IOException {
PriorityQueue<TreeNode<CharFreq>> pq = new PriorityQueue<TreeNode<CharFreq>>();
for (int i = 0; i < trees.size(); i++) {
if (trees.get(i).getItem().getFreq() > 0) {
pq.offer(new TreeNode<CharFreq>(new CharFreq(trees.get(i).getItem().getChar(), trees.get(i).getItem().getFreq())));
}
}
while (pq.size() > 1) {
TreeNode<CharFreq> leftNode = pq.poll();
TreeNode<CharFreq> rightNode = pq.poll();
TreeNode<CharFreq> parentNode = new TreeNode<CharFreq>(new CharFreq('\u0000', ((leftNode.getItem().getFreq()) + (rightNode.getItem().getFreq()))), leftNode, rightNode);
}
return pq.poll();
}
同等のクラスではないことはわかっていますが、CharFreqは同等です。私の質問は、このキャストの問題を回避するようにコードを修正できるかどうかです。