    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    }