java - 将泛型类型求和为 double

标签 java generics

我需要实现一个图,该图将通用类型元素作为节点,并将通用类型元素作为边的标签。当标签为 Double 类型时,我需要能够计算图表的权重。

public class Graph<V, T> {
  ...

  public Double graphWeight() {
    Double sum = 0;

    for every label T weight {
        sum = sum + weight;
    }

    if(!directed) sum /= 2;

    return sum;
  }
}

这可以以某种方式完成吗?

最佳答案

传递并存储 DoubleFunction<T> 的实例在图的构造函数中。然后在循环中使用存储的实例:

public class Graph<V, T> {
  ...
  private final DoubleFunction<T> getWeight;
  public Graph(DoubleFunction<T> getWeight) {
    this.getWeight = getWeight;
  }
  public double graphWeight() {
    double sum = 0;
    for every label T weight {
        sum = sum + getWeight.apply(weight);
    }
    if(!directed) {
        sum /= 2;
    }
    return sum;
  }
}

图表的实例是这样创建的:

class Edge {
  ...
  public double weight() {
    ..
  }
}
...
Graph<Vertex,Edge> graph = new Graph<>(Edge::weight);

关于java - 将泛型类型求和为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918408/

相关文章:

java - 类<? extends SomeSuperclass> 显然是不允许的。什么有意义呢?

c# - 通用类和向下转型(类型转换)

Java 与泛型混淆

java - 在静态方法 Java 中使用泛型返回值

java - 没有参数的参数化类?

java - 在知道其大小之前发送请求内容的 HTTP (org.apache.http)

java - 如何在 apache karaf 中安装和运行 osgi bundle

java - 使用函数式风格合并两个数组

java - CKEDITOR,在jsp页面上传图片

java - 如何在 Spring Security 中使用自定义角色/权限?