"(obj1.compareTo(obj2)< = 0)?之一:2"含义?

时间:2016-03-31 01:52:46

标签: java graph vertex compareto

我使用了一些来自在线资源的代码,用于化学建模项目的图论部分。我试图理解这一点。第一行代码对于课程的整体决定意味着什么?一个是第一个顶点,两个是类的第二个顶点。我不熟悉线性代数/离散数学,所以尽可能避免数学上强烈的解释。

public Edge(Vertex one, Vertex two, int length){
    this.one = (one.getElement().compareTo(two.getElement()) <= 0) ? one : two;
    this.two = (this.one == one) ? two : one;
    this.length = length;
}

谢谢!

2 个答案:

答案 0 :(得分:2)

写得不好。两个测试,一个人会做,几乎故意默默无闻。它只是试图将较小的顶点分配给one而将另一个顶点分配给two,以便保持边缘的一致性。更清晰的版本是:

public Edge(Vertex one, Vertex two, int length)
{
    if (one.getElement().compareTo(two.getElement()) <= 0)
    {
        this.one = one;
        this.two = two;
    }
    else
    {
        this.one = two;
        this.two = one;
    }
    this.length = length;
}

答案 1 :(得分:0)

不确定你在这里尝试做什么,但第一行是使用Comparable接口,无论Vertex.getElement()返回什么,都实现了。如果one的元素与two的元素“小于或等于”,则this边缘one设置为给定的one,否则设置为twothis。然后第二行相应地设置two的{​​{1}}(即,如果我们决定this.one = one,则this.two = two另有this.one = twothis.two = one