    001    package org.maltparser.parser.history.kbest;
    002
    003    /**
    004    *
    005    * @author Johan Hall
    006    * @since 1.1
    007    **/
    008    public class ScoredCandidate extends Candidate {
    009            /**
    010             * The candidate score
    011             */
    012            protected float score;
    013
    014            /**
    015             * Constructs a candidate object
    016             */
    017            public ScoredCandidate() {
    018                    super();
    019            }
    020
    021            /**
    022             * Returns the score for this candidate if it is available, otherwise Double.NaN
    023             *
    024             * @return the score for this candidate if it is available, otherwise Double.NaN
    025             */
    026            public float getScore() {
    027                    return score;
    028            }
    029
    030            /**
    031             * Sets the score for this candidate.
    032             *
    033             * @param score a score
    034             */
    035            public void setScore(Float score) {
    036                    this.score = score;
    037            }
    038
    039            /**
    040             * Resets the candidate object
    041             */
    042            public void reset() {
    043                    super.reset();
    044                    this.score = Float.NaN;
    045            }
    046
    047            /* (non-Javadoc)
    048             * @see java.lang.Object#equals(java.lang.Object)
    049             */
    050            public boolean equals(Object obj) {
    051                    if (this == obj)
    052                            return true;
    053                    if (obj == null)
    054                            return false;
    055                    if (getClass() != obj.getClass())
    056                            return false;
    057                    ScoredCandidate item = (ScoredCandidate)obj;
    058                    return actionCode == item.actionCode && score == item.score;
    059            }
    060
    061            public int hashCode() {
    062                    return (31 * 7 + actionCode) * 31 + Float.floatToIntBits(score);
    063            }
    064
    065            /* (non-Javadoc)
    066             * @see java.lang.Object#toString()
    067             */
    068            public String toString() {
    069                    StringBuilder sb = new StringBuilder();
    070                    sb.append(super.toString());
    071                    sb.append('\t');
    072                    sb.append(score);
    073                    return sb.toString();
    074            }
    075    }