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 }