2012-09-06 2 views
0

까지 내가 읽은 곳이면 어디서나 동적 이름을 가진 변수를 만들 수 없으므로 문제가 있는지 알아볼 수 있습니다.동적 이름 변수 java (구조체를 만드는 파서)

그것은이 방법으로 구성되어 있습니다 : 내 문제는 내가 영어로 법률을 포함하는 긴 텍스트를 구문 분석해야한다는 것입니다, 느릅 나무 계층 구조가

---- 장을

-------- 기사 또는

---- 제목

,

-------- 장

------------- 기사 또는

---- 제목

-------- 장

------------- 섹션

----------------- 기사

당신이 그것을 sittuation에 depends 말할 수있는 구조가 달라져야합니다.

1 권 : :이 정보는이 같은 파일에서 가져온해야 책 한 제목 1 이름 : 이름 제목 하나 제 1의 이름 제 1 장 제 1의 제 1 조 제 2의 이름을 : 이름 제 2 조 제 2 장 : 이름 제 2 장 섹션 1 : 섹션의 이름 1 제 3 조 제 3 조 제목이 이름 : ... 제 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에 새로운 챕터 목록이 필요하다고 말했을 때 작성해야합니다.

어떻게하면됩니까?

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

그리고 예약 :

+0

지도는 동적 변수를 만드는 것보다 최선의 선택이라고 생각합니다. – kosa

+0

그래,이 솔루션에 대해 들었지만 맵이 어떻게 작동하는지 알지 못합니다. 여기서 중요한 점은 요소가 책인지, 구조에서 무엇이 어디서 있어야하는지 (어떤 책이 어디에 있는지, 어떤 장에 있는지 등)를 알아야한다는 것입니다. 나는 다음과 같은 메뉴를 만들어야한다. 책에 따라 장부와 장부 목록을 선택하고 그 다음에 기사의 텍스트를 보여줄 기사까지 선택한다. 귀하의 답변에 감사드립니다. – yafrack

답변

3

가장 간단한 해결책은 그들 모두가 그 인터페이스가 다른 Element 개체에 대한 참조를 포함, Element 인터페이스를 구현해야하는 것입니다 사전에

감사

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

    public void getSubElements() { 
     return subElements; 
    } 
} 

Polymorphism.

+0

그래서 챕터와 기사를 구별하지 않아도됩니까? 그러나 어떻게이 구조에 정보를 넣고 그것을 얻습니까? 고마워, 난 자바에서 새로운이야. – yafrack