我正在尝试存储民法西班牙语代码。
它以这种方式分开:
Books
----Chapters
--------Articles
OR
Books
----Titles
--------Chapters
-------------Articles
OR
Books
----Titles
--------Chapters
-------------Sections
-----------------Articles
书籍,标题,章节和章节必须存储int identifier
和String with the name of the book
,title
等。元素的数量是可变的,因为有些书籍的章节多于其他书籍,例如。
Articles
必须存储int identifier
和String
文章内容。
我会建议一个结构的declaration and usage
(数据,输出数据)的例子,因为(对我而言)它有点复杂。
答案 0 :(得分:1)
为此使用类怎么样?好吧,一切都可以用原始类型和容器来实现,但为什么呢?它的可读性要低得多。
public class Book {
private int id;
private List<Chapter> chapters;
private List<Title> titles;
// getters/setters/constructor
}
public class Chapter {
private int id;
private List<Section> section;
private List<Article> articles;
// getters/setters/constructor
}
public class Title {
private int id;
private List<Chapter> chapters;
// getters/setters/constructor
}
public class Section {
private int id;
private List<Article> articles;
// getters/setters/constructor
}
对我而言,这是最简单的方法。 The Elite Gentleman的版本稍微复杂一些,但另一方面更改领域模型(增加新类型或改变关系)更加强大。
答案 1 :(得分:0)
而是创建节点的树结构,如下所示(这是一个可以帮助你的psedo代码):
public interface Node {
public int getId();
public String getName();
public void saveTo(SaveVisitor visitor);
}
public abstract class AbstractNode {
public List<Node> children;
//Getters
public List<Node> getChildren() { return children; }
public void addChild(Node node) {
if (children == null) {
children = new ArrayList<Node>();
}
children.add(node);
}
@Override
public void saveTo(SaveVisitor visitor) {
if (visitor != null) {
visitor.setId(getId());
visitor.setName(getName());
if (children != null) {
for (Node child: children) {
child.saveTo(visitor);
}
}
}
}
}
public class Book extends AbstractNode {
}
public class Title extends AbstractNode {
}
public class Chapter extends AbstractNode {
}
public class Section extends AbstractNode {
}
public class Article extends AbstractNode {
}
您的SaveVisitor
可以是任何接受ID
,Name
的访问者,子类可以是任何格式(XML,JSON,结构明文,Excel等)。< / p>
答案 2 :(得分:0)
我的建议是Map<Index, Entry>
,其中Entry
为文本(可能是简单的字符串或类似内容),Index
存储坐标:
class Index {
public int book, title, chapter, section, article;
}
然后,您可以实现Index
可比较(equals()/compareTo()
),并可能提供一些导航到该书的方法(getNextChapter(Index)
,isLastArticle(Index)
等。)
您也可以将这些辅助方法放入一个单独的类(如CivilSpanishCodeHandler
)中,以保持干净。
此外,我会想到一个Tree
因为它是最自然的表现形式。虽然我建议编写自己的树结构来将所有上述辅助方法实现到树中。