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 }