我想介绍与前面的示例类似的 GUI。
- 左侧有一组段落(Paragraph类的实例),其中包含 单词的集合(字符串)。正如您所看到的 - 在文本中,有突出显示的文本片段(绿色、橙色、蓝色)。
- 文本片段是具体段落中单词的子集合。
- 右侧是一组事实(Fact类的实例)。
- 每个事实都至少与一个文本片段相关联(可能还有更多 - 例如事实#2)。
代码片段:
public class Paragraph {
private List<String> words;
…
}
public class Fact {
private String text;
…
}
<小时/>
我希望这将是一个交互式 GUI(用户可以单击文本片段 => 例如,将弹出相应的事实/用户可以单击该事实 => 例如,仅显示相应的文本片段保持突出显示)。
因此,每个文本片段必须知道相应的事实,反之亦然。
Java中如何实现文本片段与对应事实的关联以及什么是合适的数据结构?
我指的是这种链接的数据模型,而不是 GUI 实现。我认为字数远高于文本片段的数量。
最佳答案
假设 1 个事实可以有多个段落,但 1 个段落只能属于 1 个事实。我将像这样实现这些类:
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;
}
}
关于java - 用于文本片段和类实例双向映射的数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41153023/