2012-09-24 4 views
1

내가 바퀴를 다시 발명하지 않는다는 것을 확인하기 위해 알려진 알고리즘, 클래스 또는 내 문제를 해결할 수있는 것이 있는지 알고 싶습니다. 응용 프로그램의 거대한 URL 목록이 있습니다. 사이트 맵과 같은 데이터 구조를 만들기 위해 이러한 URL을 트리에 넣고 싶습니다.URL 목록을 트리로 변환

이전과 같은 것으로 보입니다. 그러나 내 검색 결과에서 볼 수있는 모든 내용이 XML에서 트리로 이루어진 것으로 보입니다. 이상적으로 나는 자바로 답을하고 싶지만 필요한 경우 자바로 변환 할 수 있다고 확신한다. 직접해야하는 경우 각 URL을 가져 와서 색인으로 나눕니다.

 
[root]  [0] [1] [1] -file 
wwe.site.com/dir1/dir2/file.html 
[root]  [0] [1] [1] 
www.site.com/dirabc/dir2/file.html 

그래서, 난 등 오프셋 [0], [1], [2], …에 각 URL을 구문 분석, 그 추가하는 트리의 깊이 아래로 될 것입니다. 그건 적어도 내 초기 계획 이었어. 나는 모든 제안에 열려 있습니다!

+0

좋아하는 검색 엔진은 바퀴를 다시 만들 수 없도록하기 위해 물건을 찾기 시작할 수있는 좋은 장소입니다. 너 뭐 해봤 니? –

답변

1

당신은 당신이 당신의 관찰 디렉토리 구조의 계층 구조를 반영하는 방법으로 TreeModel를 구현해야합니다 중첩 된 HashMaps을

public class UrlTree { 

    private final Map<String, UrlTree> branches = new HashMap<String, UrlTree>(); 

    public void add(String[] tokens, int i) { 
    if (i >= tokens.length) { 
     return; 
    } 

    final String token = tokens[i]; 

    UrlTree branch = branches.get(token); 

    if (branch == null) { 
     branch = new UrlTree(); 
     branches.put(token, branch); 
    } 

    branch.add(tokens, i + 1); 
    } 

    ... 
} 
1

로 UrlTree을 정의 할 수 있습니다. FileTreeModel이 예이고 ac.Name은 빈티지 파일 시스템의 경로를 구문 분석하는 간단한 클래스입니다. How to Use Trees을 참조하십시오. here으로 표시된 NetBeans Outline의 인스턴스는 좋은 대체보기를 만듭니다.