Hallo,
Ik ben bezig met de Huffman compressie in een binaire boom. Hiervoor heb ik een class Node gemaakt:
Omschrijving
Nu wil ik de binaire boom opbouwen. Ter info:
frequentieList //bevat in eerste instantie instanties van de klasse Node
frequentieList //bevat als het goed is nu de binaire boom.
De methode Collections.sort(frequentieList) geeft echter een java.lang.NullPointerException.
Daardoor knalt ook de JVM eruit:
Fatal exception occured. Program will exit.
Probleem
Het probleem lijk erin te zitten dat Collections.sort() problemen lijkt te hebben met de null waarde van het object wat gesorteerd moet worden. Als ik
Vervang door:
Komt het probleem niet voor. Is het normaal dat de functie Collections.sort() eruit knalt als er null waardes gesorteerd moeten worden? Hoe lost ik dit op een goede manier op zonder dummy tekens aan te moeten maken?
Ter info
Als editor gebruik ik JBuilder Foundation X, met JDK 1.4
Ik ben bezig met de Huffman compressie in een binaire boom. Hiervoor heb ik een class Node gemaakt:
Omschrijving
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| package huffman; public class Node implements Comparable { private String teken; private Integer aantal; public Node leftChild, rightChild; public Node(String teken, int aantal, Node leftChild, Node rightChild) { this.teken = teken; this.aantal = new Integer(aantal); this.leftChild = leftChild; this.rightChild = rightChild; } public Node getLeftChild() { return this.leftChild; } public Node getRightChild() { return this.rightChild; } public int getAantal() { return this.aantal.intValue(); } public String getTeken() { return this.teken; } public int compareTo(Object o) { Node andereNode = (Node)o; int resultaat = aantal.compareTo(andereNode.aantal); if (resultaat != 0) { return resultaat; } else { return teken.compareTo(andereNode.teken); } } } |
Nu wil ik de binaire boom opbouwen. Ter info:
frequentieList //bevat in eerste instantie instanties van de klasse Node
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| private List frequentieList; ... ... ... frequentieList = new LinkedList(); ... ... ... while (frequentieList.size() > 1) { Collections.sort(frequentieList); Node left = (Node) frequentieList.remove(0); Node right = (Node) frequentieList.remove(0); int som = left.getAantal() + right.getAantal(); frequentieList.add(new Node(null, som, left, right)); } |
frequentieList //bevat als het goed is nu de binaire boom.
De methode Collections.sort(frequentieList) geeft echter een java.lang.NullPointerException.
Daardoor knalt ook de JVM eruit:
Fatal exception occured. Program will exit.
Probleem
Het probleem lijk erin te zitten dat Collections.sort() problemen lijkt te hebben met de null waarde van het object wat gesorteerd moet worden. Als ik
Java:
1
| frequentieList.add(new Node(null, som, left, right)); |
Vervang door:
Java:
1
| frequentieList.add(new Node("", som, left, right)); |
Komt het probleem niet voor. Is het normaal dat de functie Collections.sort() eruit knalt als er null waardes gesorteerd moeten worden? Hoe lost ik dit op een goede manier op zonder dummy tekens aan te moeten maken?
Ter info
Als editor gebruik ik JBuilder Foundation X, met JDK 1.4