001    package org.maltparser.ml.lib;
002    
003    
004    public class MaltFeatureNode implements Comparable<MaltFeatureNode> {
005    
006            int index;
007            double value;
008            
009            public MaltFeatureNode() {
010                    index = -1;
011                    value = 0;
012            }
013            
014            public MaltFeatureNode(int index, double value) {
015                    setIndex(index);
016                    setValue(value);
017            }
018    
019            public int getIndex() {
020                    return index;
021            }
022    
023            public void setIndex(int index) {
024                    this.index = index;
025            }
026    
027            public double getValue() {
028                    return value;
029            }
030    
031            public void setValue(double value) {
032                    this.value = value;
033            }
034    
035            public void clear() {
036                    index = -1;
037                    value = 0;
038            }
039            public int hashCode() {
040                    final int prime = 31;
041                    final long temp = Double.doubleToLongBits(value);
042                    int result = prime * 1 + index;
043                    result = prime * result + (int) (temp ^ (temp >>> 32));
044                    return result;
045            }
046    
047            public boolean equals(Object obj) {
048                    if (this == obj)
049                            return true;
050                    if (obj == null)
051                            return false;
052                    if (getClass() != obj.getClass())
053                            return false;
054                    MaltFeatureNode other = (MaltFeatureNode) obj;
055                    if (index != other.index)
056                            return false;
057                    if (Double.doubleToLongBits(value) != Double.doubleToLongBits(other.value))
058                            return false;
059                    return true;
060            }
061            
062            public int compareTo(MaltFeatureNode aThat) {
063                    final int BEFORE = -1;
064                    final int EQUAL = 0;
065                    final int AFTER = 1;
066    
067                    if (this == aThat)
068                            return EQUAL;
069    
070                    if (this.index < aThat.index)
071                            return BEFORE;
072                    if (this.index > aThat.index)
073                            return AFTER;
074    
075                    if (this.value < aThat.value)
076                            return BEFORE;
077                    if (this.value > aThat.value)
078                            return AFTER;
079    
080                    return EQUAL;
081            }
082    
083            public String toString() {
084                    return "XNode [index=" + index + ", value=" + value + "]";
085            }
086    }