我有一个有两个端口的连接器。两个端口有一个共同的根作为 Resource 。我试图找到这两个端口的公共(public)根。

我需要一个端口(p1)的一组元素,可以通过 getParent 方法找到它。对于另一个端口 (p2),我需要检查集合中是否存在任何 p2 元素。虽然我需要这个方法来返回一个 Resource 类型的对象,但我在这一点上有点卡住了。我收到以下错误。


private Element findCommonRoot(Connector connector)
{

    List<Port> portList = getListOfPort(connector);
    Port p1 = portList.get(0);
    Set<Element> portElementSet = new TreeSet<Element>();

    Element pathElement = p1.getParent();
    while (pathElement != null)
    {
        portElementSet.add(pathElement);
        pathElement = pathElement.getParent();
    }

    Port p2 = portList.get(1);
    Element pathElement2 = p2.getParent();

    for(Element e: portElementSet)
    {
        if(portElementSet.contains(pathElement2))
            pathElement2 = e;
    }

    return pathElement2;
}

最佳答案

如果不需要对元素进行排序,请使用 HashSet 代替 TreeSetHashSet 未排序,不需要元素进行比较。

10-07 17:14