filebot/source/net/filebot/similarity/SimilarityComparator.java

45 lines
803 B
Java
Raw Normal View History

2014-04-19 02:30:29 -04:00
package net.filebot.similarity;
import java.util.Comparator;
public class SimilarityComparator implements Comparator<Object> {
2015-07-25 18:47:19 -04:00
2012-02-22 03:30:50 -05:00
protected SimilarityMetric metric;
protected Object[] paragon;
2015-07-25 18:47:19 -04:00
2012-02-22 03:30:50 -05:00
public SimilarityComparator(SimilarityMetric metric, Object[] paragon) {
this.metric = metric;
this.paragon = paragon;
}
2015-07-25 18:47:19 -04:00
2013-01-27 11:41:33 -05:00
public SimilarityComparator(Object... paragon) {
this(new NameSimilarityMetric(), paragon);
}
2015-07-25 18:47:19 -04:00
@Override
public int compare(Object o1, Object o2) {
2012-02-22 03:30:50 -05:00
float f1 = getMaxSimilarity(o1);
float f2 = getMaxSimilarity(o2);
2015-07-25 18:47:19 -04:00
if (f1 == f2)
return 0;
2015-07-25 18:47:19 -04:00
return f1 > f2 ? -1 : 1;
}
2015-07-25 18:47:19 -04:00
2012-02-22 03:30:50 -05:00
public float getMaxSimilarity(Object obj) {
float m = 0;
for (Object it : paragon) {
m += (it != null) ? metric.getSimilarity(obj, it) : 0;
}
return m / paragon.length;
}
}