You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Chen Tao (Jira)" <ji...@apache.org> on 2020/03/09 18:15:00 UTC
[jira] [Created] (MATH-1522) The generic parameter of
ClusterRanking can be move to method
Chen Tao created MATH-1522:
------------------------------
Summary: The generic parameter of ClusterRanking can be move to method
Key: MATH-1522
URL: https://issues.apache.org/jira/browse/MATH-1522
Project: Commons Math
Issue Type: Improvement
Reporter: Chen Tao
The generic parameter on class "ClusterRanking“ is unnecessary,
it is redundancy on define a variable, and hard to reuse(it could be):
{code:java}
ClusterRanking<DoublePoint> evaluator = new SumOfClusterVariances<>();
List<Cluster<DoublePoint>> clusters1 = ...
evaluator.compute(clusters1); // It is OK.
...
// It could be reused globally, but now trigger a compile error
List<Cluster<MyClusterable>> clusters2 = ...
evaluator.compute(clusters2); // Compile error
{code}
The generic parameter of ClusterRanking can be move to method:
{code:java}
@FunctionalInterface
public interface ClusterRanking {
/**
* Computes the rank (higher is better).
*
* @param clusters Clusters to be evaluated.
* @return the rank of the provided {@code clusters}.
*/
<T extends Clusterable> double compute(List<? extends Cluster<T>> clusters);
}
{code}
Then we can define a ClusterRanking easier and reuse it globally:
{code:java}
// The variable define is simple now.
ClusterRanking evaluator = new SumOfClusterVariances();
...
List<Cluster<DoublePoint>> clusters1 = ...
double score1 = evaluator.compute(clusters1); // OK.
...
// It can be reused globally now.
List<Cluster<MyClusterable>> clusters2 = ...
double score2 = evaluator.compute(clusters2); // OK.
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)