Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文本片段和类实例双向映射的数据模型_Java_Oop_Data Structures - Fatal编程技术网

Java 文本片段和类实例双向映射的数据模型

Java 文本片段和类实例双向映射的数据模型,java,oop,data-structures,Java,Oop,Data Structures,我想介绍与前面示例类似的GUI 在左侧,有一组包含 单词的集合(字符串)。如您所见–在文本中,有突出显示的文本片段(绿色、橙色、蓝色) 文本片段是来自具体段落的单词的子集合 在右侧,有一组事实(事实类的实例) 每个事实与至少一个文本片段关联(可能有更多–例如事实#2) 代码片段: 公共类段落{ 私人列表词; … } 公开课事实{ 私有字符串文本; … } 我希望这将是一个交互式GUI(用户可以单击文本片段=>例如,将弹出相应的事实/用户可以单击事实=>例如,仅突出显示相应的文本片段)


我想介绍与前面示例类似的GUI

  • 在左侧,有一组包含 单词的集合(字符串)。如您所见–在文本中,有突出显示的文本片段(绿色、橙色、蓝色)
  • 文本片段是来自具体段落的单词的子集合
  • 在右侧,有一组事实事实类的实例)
  • 每个事实与至少一个文本片段关联(可能有更多–例如事实#2)

代码片段:

公共类段落{
私人列表词;
…
}
公开课事实{
私有字符串文本;
…
}

我希望这将是一个交互式GUI(用户可以单击文本片段=>例如,将弹出相应的事实/用户可以单击事实=>例如,仅突出显示相应的文本片段)

因此,每个文本片段都必须知道相应的事实,反之亦然

如何在Java中实现文本片段和相应事实之间的链接,以及什么是合适的数据结构?


我指的是这个链接的数据模型,而不是GUI实现。我认为字数远高于文本片段的数量。

假设一个事实可以有多个段落,但一个段落只能属于一个事实。我将按照如下方式实现这些类:

class Fact{

    private ArrayList<ParagraphText> paraTexts;
    private String text;        
    //any other attributes

    public Fact(){
        //initialization..
    }

    public void addParaText(ParagraphText p){
        paraTexts.add(p);
        p.linkWithFact(this);  //remember which fact p belongs to
    }

    public void removeParaText(ParagraphText p){
        if(paraTexts.contains(p)){
            p.unlinkFact();
            paraTexts.remove(p);
        }
    }
}

@PM77-1是的,类似于我需要的双向地图。实际上,我对文本片段的数据结构的建议有问题。如何处理这些信息?我认为每个字符串单词都有一个特殊的类,但大多数单词不是某个文本片段的一部分。@user3437460是的,如果你的意思是从具体文本片段引用回事实的话。一个段落能与多个事实相关吗?@user3437460是的,但关系是具体文本片段=一组单词(不是整个段落)之间的关系事实也是如此。一个段落可以包含多个文本片段。@David让我知道它是否有用。谢谢,但我认为我们对该段落有不同的看法。本文中的段落只是一个类似于单词集合的包装器。事实与整段文字无关,而只与该段文字有关。我的例子中的事实1与7有关。八,。第一段的单词。很抱歉,可能我的介绍描述中没有清楚地提到。@David为了便于阅读,我尝试使用较短的名称。这并不意味着它是整个段落,否则我就不会包括开始和结束位置。为了清晰起见,我对命名进行了编辑。
class Fact{

    private ArrayList<ParagraphText> paraTexts;
    private String text;        
    //any other attributes

    public Fact(){
        //initialization..
    }

    public void addParaText(ParagraphText p){
        paraTexts.add(p);
        p.linkWithFact(this);  //remember which fact p belongs to
    }

    public void removeParaText(ParagraphText p){
        if(paraTexts.contains(p)){
            p.unlinkFact();
            paraTexts.remove(p);
        }
    }
}
class ParagraphText{

    private int startPos;
    private int endPos;
    private Fact fact;
    //any other attributes

    public ParagraphText(int startPos, int endPos){
        this.startPos = startPos;
        this.endPos = endPos;
        //any other initializations
    }

    public void linkWithFact(Fact fact){
        this.fact = fact;
    }

    public void unlinkFact(){
        this.fact = null;
    }
}