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