【问题标题】:Dynamic name variable java (parser creating a structure)动态名称变量java(解析器创建结构)
【发布时间】:2012-08-31 17:32:21
【问题描述】:

据我所知,您无法在 Java 中创建具有动态名称的变量,因此我将解释该问题以查看是否有替代方法。我的问题是我必须解析一个包含英文法律的长文本,它有一个层次结构:

这样划分:

书籍

----章节

--------文章 或

书籍

----标题

--------章节

----------文章 或

书籍

----标题

--------章节

-------------章节

-----------------文章

正如您所说,它取决于情况,结构必须有所不同。信息必须取自如下文件:

书 1:书名 标题 1:标题一的名称 第 1 章:第 1 章的名称 第 1 条:第 1 条的名称 第 2 条:第 2 条的名称 第2章:第2章的名称 第 1 节:第 1 节的名称 第 3 条:第 3 条的名称 标题 2:... 第1章: ... ... 书2:... …… 第 3 册


所以你明白了,文本可能包含随机的分类,它不像首先是所有章节,然后是所有文章等等。

为此建议的实现是:

 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
}

问题是列表必须以动态方式创建。这是当解析器说我需要书号 n 中的新章节列表时,我必须创建它。

我该怎么做?

提前致谢

【问题讨论】:

  • 我认为 map 可能是比创建动态变量更好的选择。
  • 好的,我听说过这个解决方案,但我不知道地图是如何工作的。这里重要的是,我需要知道元素是一本书还是它应该在结构中的什么位置和位置(在哪本书中,在哪一章等等)。我必须制作一个菜单,例如:选择一本书以及根据书的章节或标题列表,然后选择等等,直到我将在其中显示文章文本的文章。感谢您的回答。

标签: java class variables dynamic linked-list


【解决方案1】:

最简单的解决方案是让它们都实现一个Element 接口,然后让该接口包含对其他Element 对象的引用:

public interface Element {
    List<Element> getSubElements();
}

然后预订:

public class Book implements Element {
    // Your other stuff
    private List<Element> subElements;

    public void getSubElements() {
        return subElements;
    }
}

Polymorphism 处于最佳状态。

【讨论】:

  • 所以你不区分章节和文章对吧?但是你如何把信息放在这个结构中并得到它呢?谢谢,我是java新手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2015-02-27
  • 1970-01-01
相关资源
最近更新 更多