huaban / jieba-analysis

结巴分词(java版)
https://github.com/huaban/jieba-analysis
Apache License 2.0
2.55k stars 835 forks source link

KeyWord中compareTo排序算法不兼容JDK7+ #121

Open qiyankai opened 3 years ago

qiyankai commented 3 years ago

老哥,JDK7+以上排序算法不是快排,是timsort算法,需要考虑两个值相等的情况 否则会抛出Comparison method violates its general contract!异常

将tfidfvalue换为包装类型,使用包装类型的compareTo方法 解决方案如下: public Keyword(String name, Double tfidfvalue) { this.name = name; // tfidf值只保留3位小数 this.tfidfvalue = Double.valueOf((double)Math.round(tfidfvalue * 10000) / 10000); }

/**
 * 为了在返回tdidf分析结果时,可以按照值的从大到小顺序返回,故实现Comparable接口
 */
@Override
public int compareTo(Keyword o) {
    return o.tfidfvalue.compareTo(this.tfidfvalue);
}