有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的歧义结构解析算法

我有两个节目 一个人创造一个结构,一个人解决它

结构如下

class A {
    List<B>
}

class B {
    List<A>
}

现在的问题是,创建结构的程序不确定结构是否正确

A1->B1
 |->B2->A2
     |->A3->B3->A4

A1->B1
 |->B3->A4
 |->B2->A2
     |->A3

是否有人可以提供一种方法来传递这种歧义,不管B3是连接到A1还是A3,以便第二个程序可以知道存在歧义,并且可以根据一些约束决定使用哪种结构


共 (3) 个答案

  1. # 1 楼答案

    如果这真的是你将遇到的仅有的两种结构,那么你可以检查A1有多少元素:

    boolean useFirstStructure = (A1.size()==2);
    

    第二个结构是A1.size()==3

    不过,CKuck的答案是处理更一般结构的正确方法

  2. # 2 楼答案

    如果启动代码,如:

     new A(
       List(
         new B(List()),
         new B(
           List(
               new A(List()),
               new A(List(new B(List(new A())
               )
           )
        )
     )
    

    你会得到

    A1->B1
     |->B2->A2
         |->A3->B3->A4
    

    如果您像这样启动代码:

     new A(
       List(
         new B(List(new A(List())),
         new B(List(new A(List()),
         new B(List(new A(List()), new A(List())))
    

    你会得到

    A1->B1
     |->B3->A4
     |->B2->A2
         |->A3
    

    您将能够序列化和反序列化这两种表示

    你说的模棱两可是什么意思

  3. # 3 楼答案

    可以将结构表示为具有两种节点(a和B)和两种链接(从a到B,反之亦然)的图

    class A {}
    
    class B {}
    
    class Link<F,T> {
        F from;
        T to;
    }
    
    class Structure {
        List<A> a;
        List<B> b;
        List<Link<A,B>> a2b;
        List<Link<B,A>> b2a;
    }
    

    约束应确保链接仅在图的节点之间

    模糊性将由指向同一节点的多个链接表示