2012-04-21 4 views
0

TreeMap의 키를 검색해야하는 작업을하고 있습니다 (TreeMap은 발견 된 파일에 매핑됩니다. 기본적으로이 TreeMap은 Inverted Index입니다). 프로그램을 쿼리 파일에 저장합니다. 그러나 효율성을 높이기 위해 교수가 원하지 않는 것은 쿼리 단어로 시작하는 키를 찾을 때 TreeMap의 모든 키를 반복하는 것입니다. 반복하는 데 필요한 키만 반복하는 것이 좋습니다. 예를 들어, 쿼리 단어가 C로 시작하면 C로 시작하는 키만 반복해야합니다.이 방법에 접근하는 방법에 대한 아이디어가 있습니까?TreeMap의 일부를 반복하는 방법은 무엇입니까?

+0

난 당신이 자바 트리 맵을 의미 가정? TreeMap의 키를보다 정확하게 설명 할 수 있습니까? 또한 "필요한 키만"에 대해보다 구체적으로 설명 할 수 있습니까? 그러나 일반적으로 TreeMap은 완전히 반복 될 수 있습니다. – nplatis

+0

예, Java TreeMap입니다. 죄송합니다.이 키는 TreeMap의 String 유형이므로 쿼리 단어와 같은 문자로 시작하는 키만 반복하고 싶습니다. 내 교수에 따르면 TreeMap의 일부만 반복하는 방법이 있지만이 방법으로 접근하려고합니다 (가능한 경우). 도움이 될까요? – maxicecil21

답변

1

TreeMap의 subMap() 메서드를 사용하면 검사 할 키 범위 만 포함 된 SortedMap을 얻을 수 있습니다. 그런 다음 SortedMap을 반복합니다.

0

여기 @ottomeister 제안 무엇의 기본 구현은 다음과 같습니다

public class Tester{ 
    public static void main(String a[]){ 
     TreeMap<CustomObject,String> tm = new TreeMap<CustomObject,String>(); 
     tm.put(new CustomObject(4,"abc"),"abc"); 
     tm.put(new CustomObject(7,"bcd"),"bcd"); 
     tm.put(new CustomObject(25,"cde"),"cde"); 
     tm.put(new CustomObject(18,"def"),"def"); 
     tm.put(new CustomObject(2,"efg"),"efg"); 
     tm.put(new CustomObject(8,"fgh"),"fgh"); 
     tm.put(new CustomObject(3,"aab"),"aab"); 
     tm.put(new CustomObject(13,"aab"),"abb"); 

     Map<CustomObject, String> sub = tm.subMap(new CustomObject(9,""),new CustomObject(20,"")); 

     for(Map.Entry<CustomObject,String> entry : sub.entrySet()) { 
      CustomObject key = entry.getKey(); 
      String value = entry.getValue(); 

      System.out.println(key.getId() + " => " + value); 
     } 
    } 
} 

class CustomObject implements Comparable<CustomObject>{ 
    private int id; 
    private String Name; 
    CustomObject(int id, String Name){ 
     this.id = id; 
     this.Name = Name; 
    } 
    @Override 
    public int compareTo(@NotNull CustomObject o) { 
     return this.id - o.id; 
    } 
    public int getId(){ 
     return this.id; 
    } 
} 

출력 : 13 => ABB (18) => 데프

관련 문제